文档

扩展 MinIO 租户

此过程记录了通过在 Kubernetes 基础设施中部署额外的 MinIO Pod 池来扩展现有 MinIO 租户的可用存储容量。

重要

MinIO 运算符控制台已在运算符 6.0.0 中弃用并移除。

有关通过运算符控制台安装的租户迁移到 Kustomization 的说明,请参阅修改 MinIO 租户

先决条件

MinIO Kubernetes 运算符

此页面上的此过程 *需要* 有效安装 MinIO Kubernetes 运算符,并假设本地主机具有匹配的 MinIO Kubernetes 运算符安装。此过程假设使用最新的稳定运算符,版本 6.0.4。

有关部署 MinIO 运算符的完整文档,请参阅部署 MinIO 运算符

可用的工作节点

MinIO 部署额外的 minio server Pod 作为新租户池的一部分。Kubernetes 集群 *必须* 具有足够的可用工作节点来安排新的 Pod。

MinIO 运算符提供用于控制 Pod 亲和性和反亲和性的配置,以将调度引导到特定工作节点。

持久卷

对驱动器的独占访问

MinIO **需要** 对为对象存储提供的驱动器或卷进行 *独占* 访问。任何其他进程、软件、脚本或人员都不应对提供给 MinIO 的驱动器或卷或 MinIO 在其上放置的对象或文件执行 *任何* 操作。

除非 MinIO 工程师指示,否则请勿使用脚本或工具直接修改、删除或移动提供的驱动器上的任何数据分片、奇偶校验分片或元数据文件,包括从一个驱动器或节点到另一个驱动器或节点。此类操作极有可能导致广泛的损坏和数据丢失,超出 MinIO 的修复能力。

MinIO 可以使用任何支持 持久卷 (PV) 的 Kubernetes ReadWriteOnce 访问模式。MinIO 的一致性保证需要 ReadWriteOnce 提供的独占存储访问。

对于节点具有直接连接存储的 Kubernetes 集群,MinIO 强烈建议使用 DirectPV CSI 驱动程序。DirectPV 提供了一个分布式持久卷管理器,可以发现、格式化、挂载、调度和监控 Kubernetes 节点上的驱动器。DirectPV 解决了手动配置和监控 本地持久卷 的限制。

步骤

MinIO Operator 支持通过添加额外的池来扩展 MinIO 租户。

  1. 查看描述租户对象 (tenant.yaml) 的 Kustomization 对象。

    spec.pools 数组描述了当前的池拓扑。

  2. spec.pools 数组中添加一个新条目。

    新池必须反映您预期的 Worker 节点、每个服务器上的卷数、存储类以及亲和性/调度程序设置的组合。有关池相关配置设置的更完整文档,请参阅 MinIO 自定义资源定义

  3. 应用更新的租户配置

    使用 kubectl apply 命令更新租户

    kubectl apply -k ~/kustomization/TENANT-NAME
    

    修改 Kustomization 目录的路径以匹配您的本地配置。

  1. 查看 Helm values.yaml 文件。

    tenant.pools 数组描述了当前的池拓扑。

  2. tenant.pools 数组中添加一个新条目。

    新池必须反映您预期的 Worker 节点、每个服务器上的卷数、存储类以及亲和性/调度程序设置的组合。有关池相关配置设置的更完整文档,请参阅 租户 Helm 图表

  3. 应用更新的租户配置

    使用 helm upgrade 命令更新租户

    helm upgrade TENANT-NAME minio-operator/tenant -f values.yaml -n TENANT-NAMESPACE
    

    上述命令假设使用了 MinIO Operator Chart 存储库。如果您手动安装了 Chart 或使用不同的存储库名称,请在命令中指定该 Chart 或名称。

    TENANT-NAMETENANT-NAMESPACE 分别替换为租户的名称和命名空间。您可以使用 helm list -n TENANT-NAMESPACE 验证租户名称。

您可以使用 kubectl get events -n TENANT-NAMESPACE --watch 监控扩展进度。MinIO Operator 更新服务以在新的节点上适当地路由连接。如果您使用自定义服务、路由、入口或类似的 Kubernetes 网络组件,则可能需要更新这些组件以适应新的 Pod 主机名范围。

停用租户服务器池

停用服务器池涉及三个步骤

  1. 对租户运行 mc admin decommission start 命令

  2. 等待停用完成

  3. 修改租户 YAML 以删除停用的池

删除租户池时,请确保 spec.pools.[n].name 字段对所有剩余池都有值。

在停用和添加时维护池顺序

如果您在多池部署中停用了一个池,则不能对新池使用相同的节点序列。例如,考虑具有以下池的部署

https://minio-{1...4}.example.net/mnt/drive-{1...4}
https://minio-{5...8}.example.net/mnt/drive-{1...4}
https://minio-{9...12}.example.net/mnt/drive-{1...4}

如果您停用了 minio-{5...8} 池,则不能添加具有相同节点编号的新池。您必须在 minio-{9...12} 之后添加新池

https://minio-{1...4}.example.net/mnt/drive-{1...4}
https://minio-{9...12}.example.net/mnt/drive-{1...4}
https://minio-{13...16}.example.net/mnt/drive-{1...4}

重要

您不能对停用的池重复使用相同的池名称或主机名序列。