文档

扩展 MinIO 租户

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

重要

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

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

先决条件

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 可以使用任何支持 ReadWriteOnce 访问模式的 Kubernetes 持久卷 (PV)。MinIO 的一致性保证要求 ReadWriteOnce 提供的独占存储访问。

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

步骤

MinIO 运算符支持通过添加其他池来扩展 MinIO 租户。

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

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

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

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

  3. 应用更新的租户配置

    使用 kubectl apply 命令更新租户

    kubectl apply -k ~/kustomization/TENANT-NAME
    

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

  1. 查看 Helm values.yaml 文件。

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

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

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

  3. 应用更新的租户配置

    使用 helm upgrade 命令更新租户

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

    上面的命令假设使用 MinIO 运算符图表存储库。如果您手动安装图表或使用不同的存储库名称安装图表,请在命令中指定该图表或名称。

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

您可以使用 kubectl get events -n TENANT-NAMESPACE --watch 监控扩展进度。MinIO 运算符更新服务以在新的节点上适当路由连接。如果您使用自定义服务、路由、入口或类似的 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}

重要

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