Kubernetes 上的 MinIO 租户
一个 MinIO 租户由部署在单个命名空间中的一整组 Kubernetes 资源组成,用于支撑 MinIO 对象存储服务。
本文默认目标 Kubernetes 基础设施上已经完成 MinIO Operator 安装。
前提条件
你的 Kubernetes 基础设施必须满足以下前提,才能部署 MinIO 租户。
MinIO Kubernetes Operator
本页步骤 要求 已有一个有效的 MinIO Kubernetes Operator 安装,并默认本地主机也安装了与之匹配的 MinIO Kubernetes Operator。 本步骤默认使用最新稳定版 Operator,即版本 5.0.18。
有关部署 MinIO Operator 的完整文档,请参阅 在 Kubernetes 上部署 MinIO。
带本地存储的 Worker Node
MinIO 强烈建议 将租户部署到带有本地直连存储的 Kubernetes worker node 上。
这些 Worker Node 应满足 MinIO 面向生产环境的 硬件检查清单。
应避免将 MinIO 租户与其他高性能软件部署在同一 worker node 上;如果确有必要,则必须配置合适的限制和约束,以保证 MinIO 获得所需的计算与存储资源。
持久卷
磁盘独占访问
MinIO 要求 对用于对象存储的磁盘或卷拥有 独占 访问权限。 任何其他进程、软件、脚本或人员都不应直接对提供给 MinIO 的磁盘或卷, 或 MinIO 在其上放置的对象或文件执行 任何 操作。
除非得到 MinIO Engineering 的明确指示,否则不要使用脚本或工具直接修改、 删除或移动这些磁盘上的任何数据分片、校验分片或元数据文件,包括在磁盘或节点 之间迁移这些文件。 这类操作极有可能导致大范围损坏和数据丢失,超出 MinIO 的自愈能力。
MinIO 通常可以使用任何支持 ReadWriteOnce 访问模式的 Kubernetes Persistent Volume (PV)。
MinIO 的一致性保证依赖于 ReadWriteOnce 提供的独占存储访问。
此外,MinIO 建议将 PVC StorageClass 的回收策略设置为 Retain。
在条件允许的情况下,应配置 PV 底层的 Storage Class、CSI 或其他 provisioner 使用 XFS 格式化卷,以确保最佳性能。
对于节点具有 Direct Attached Storage 的 Kubernetes 集群,MinIO 强烈建议使用 DirectPV CSI driver。 DirectPV 提供了一个分布式持久卷管理器,可在 Kubernetes 节点之间发现、格式化、挂载、调度和监控驱动器。 DirectPV 解决了手动配置和监控 local persistent volumes 的局限性。
对于部署到 Amazon Elastic、Azure 或 Google Kubernetes 上的租户,请选择下方标签页查看针对 PV 配置的具体建议:
EKS 上的 MinIO 租户必须使用 EBS CSI Driver 来配置所需的底层持久卷。
MinIO 强烈建议使用基于 SSD 的 EBS 卷以获得最佳性能。
MinIO 也强烈建议为基于 EBS 的 PV 使用 XFS 文件系统。
请为 MinIO EBS PV 创建一个 StorageClass,并将 csi.storage.k8s.io/fstype parameter 设置为 xfs。
MinIO 推荐以下 EBS 卷类型:
io2(Provisioned IOPS SSD) Preferredio1(Provisioned IOPS SSD)gp3(General Purpose SSD)gp2(General Purpose SSD)
有关 EBS 资源的更多信息,请参阅 EBS Volume Types。 有关 StorageClass 参数的更多信息,请参阅 StorageClass Parameters。
GKE 上的 MinIO 租户应使用 Compute Engine Persistent Disk CSI Driver 来配置所需的底层持久卷。
MinIO 推荐以下 GKE CSI Driver 存储类:
standard-rwo(Balanced Persistent SSD)premium-rwo(Performance Persistent SSD)
MinIO 强烈建议使用基于 SSD 的磁盘类型以获得最佳性能。 有关 GKE 磁盘类型的更多信息,请参阅 Persistent Disks。
AKS 上的 MinIO 租户应使用 Azure Disks CSI driver 来配置所需的底层持久卷。
MinIO 推荐以下 AKS CSI Driver 存储类:
managed-csi(Standard SSD)managed-csi-premium(Premium SSD)
MinIO 强烈建议使用基于 SSD 的磁盘类型以获得最佳性能。 有关 AKS 磁盘类型的更多信息,请参阅 Azure disk types。
租户命名空间
当你使用 Operator 创建租户时,该租户 必须 拥有自己的命名空间。 在该命名空间内,Operator 会根据租户配置生成所需的 pod。
每个租户 pod 运行三个容器:
MinIO Container:运行所有标准 MinIO 功能,等价于裸机场景下的基础 MinIO 安装。 该容器在提供的挂载点(持久卷)上存储和读取对象。
InitContainer:仅在 pod 启动期间存在,用于在启动过程中管理配置 secret。 启动完成后,该容器会终止。
SideCar container:监控租户的配置 secret,并在其发生变化时进行更新。 该容器还会检查 root 凭证,如果未找到 root 凭证则会产生错误。
从 v5.0.6 起,MinIO Operator 支持自定义 init containers,以满足特定环境所需的额外 pod 初始化逻辑。
租户通过 Persistent Volume Claim 与实际存储对象的 Persistent Volume 交互。