Logo

文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

使用 MinIO 插件部署 MinIO Tenant

此过程记录了使用 MinIO Kubernetes 插件部署 MinIO Tenant 的步骤kubectl minio.

需要更具体地定制租户配置的Kubernetes管理员,在部署前可以参考本教程创建经过验证的yaml供进一步修改的资源文件。

以下过程使用kubectl minioplugin. This procedure assumes the MinIO Operator is installed on the Kubernetes cluster. See在 Kubernetes 上部署 MinIO Operator有关部署 MinIO Operator 的完整文档。

前提条件

MinIO Operator 4.4.16

MinIO Kubernetes 插件需要MinIO Kubernetes Operator。此 过程假设使用最新的稳定 Operator 版本 4.4.16。

在 Kubernetes 上部署 MinIO Operator有关部署 MinIO Operator 的完整文档

Kubernetes Version 1.19.0

从 v4.0.0 开始,MinIO Operator 和 MinIO Kubernetes Plugin 需要 Kubernetes 1.19.0 及更高版本。Kubernetes 基础设施thekubectlCLI工具必须具有相同的1.19.0+版本。

本地附加驱动器

MinIO强烈建议在每个节点上使用本地连接的驱动器来支持MinIO租户。MinIO严格的"写后读"和"写后列"一致性模型要求使用本地磁盘文件系统(xfs、ext4等)。MinIO在使用本地连接驱动器时也展现出最佳性能。

MinIO 自动生成Persistent Volume Claims (PVC)作为部署 MinIO 租户的一部分。Operator 会为租户中的每个卷生成一个 PVC。例如,部署具有 16 个卷的租户需要 16PV.

此过程使用 MinIODirectCSIdriver 来自动从本地连接的驱动器配置持久卷,以支持生成的 PVC。请参阅DirectCSI 文档有关安装和配置说明。

对于无法部署 MinIO Direct CSI 的集群,请使用Local Persistent Volumes.

以下选项卡提供了本地持久卷和支持组件的示例 YAML 对象StorageClass:

以下 YAML 描述了Local Persistent Volume:

apiVersion: v1
kind: PersistentVolume
metadata:
   name: <PV-NAME>
spec:
   capacity:
      storage: 1Ti
   volumeMode: Filesystem
   accessModes:
   - ReadWriteOnce
   persistentVolumeReclaimPolicy: Retain
   storage-class: <STORAGE-CLASS>
   local:
      path: <PATH-TO-DISK>
   nodeAffinity:
      required:
         nodeSelectorTerms:
         - matchExpressions:
            - key: kubernetes.io/hostname
               operator: In
               values:
               - <NODE-NAME>

替换括号中的值<VALUE>使用本地驱动器的适当值。

以下 YAML 描述了StorageClass满足 MinIO 租户要求的:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: minio-local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

存储类必须volumeBindingMode: WaitForFirstConsumer确保为支持 MinIO 租户配置的所有持久卷 都使用此存储类。

过程

1) 安装 MinIO 插件

以下代码下载 MinIO Kubernetes 插件的最新稳定版本 4.4.16 并将其安装到系统中$PATH:

wget https://github.com/minio/operator/releases/download/v4.4.16/kubectl-minio_4.4.16_linux_amd64 -O kubectl-minio
chmod +x kubectl-minio
mv kubectl-minio /usr/local/bin/

您可以通过以下方式访问该插件:kubectl minio命令。运行以下命令来验证插件的安装:

kubectl minio version

如果主机上已安装 MinIO Plugin,可以跳过此步骤。 使用kubectl minio version检查插件是否已安装。

2) 为 MinIO 租户创建命名空间

使用kubectl create namespace为 MinIO 租户创建命名空间的命令:

kubectl create namespace minio-tenant-1

MinIO 支持完全一致的每个命名空间一个租户。

3) 创建 MinIO Tenant

使用kubectl minio tenant create创建 MinIO 租户的命令。

以下示例创建一个4节点MinIO部署,总容量为16Ti,横跨16个驱动器。

kubectl minio tenant create minio-tenant-1       \
  --servers                 4                    \
  --volumes                 16                   \
  --capacity                16Ti                 \
  --storage-class           direct-csi-min-io    \
  --namespace               minio-tenant-1

下表说明了该命令的每个参数:

论点

描述

minio-tenant-1

命令创建的 MinIO 租户的名称。

--servers

The number ofminio在 Kubernetes 集群中部署的服务器。

--volumes

集群中的卷数量。kubectl minio通过除法计算每个服务器的卷数volumes by servers.

--capacity

集群的总容量。kubectl minio确定每个卷的容量通过划分capacity by volumes.

--storage-class

KubernetesStorageClass在创建每个 PVC 时使用。 此示例使用 MinIODirectCSI存储类。

--namespace

部署 MinIO 租户的 Kubernetes 命名空间。

成功时,该命令返回以下内容:

  • 租户的管理员用户名和密码。请将这些凭据存储在安全位置,例如受密码保护的密钥管理器。MinIO不会再次显示这些凭据。

  • 用于连接到 MinIO 控制台的服务。该控制台支持对租户执行管理操作,例如配置身份和访问管理(IAM)和存储桶配置。

  • 为连接到 MinIO 租户而创建的服务。应用程序应使用此服务来对 MinIO 租户执行操作。

4) 配置对服务的访问

kubectl minio为 MinIO 租户和 MinIO 控制台创建服务。 输出kubectl minio tenant create包括两个服务的详细信息。您也可以使用kubectl get svc要检索服务 名称:

kubectl get svc --namespace minio-tenant-1

该命令返回类似于以下内容的输出:

NAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
minio                    ClusterIP   10.109.88.X     <none>        443/TCP             137m
minio-tenant-1-console   ClusterIP   10.97.87.X      <none>        9090/TCP,9443/TCP   129m
minio-tenant-1-hl        ClusterIP   None            <none>        9000/TCP            137m
  • Theminioservice 对应 MinIO Tenant 服务。应用程序应使用此服务对 MinIO Tenant 执行操作。

  • Theminio-tenant-1-console该服务对应 MinIO 控制台。 管理员应使用此服务访问 MinIO 控制台并在 MinIO 租户上执行管理操作。

  • Theminio-tenant-1-hl对应一个无头服务,用于促进租户内 Pod 之间的通信。

默认情况下,每个服务仅在 Kubernetes 集群内部可见。 部署在集群内的应用程序可以使用这些服务进行访问CLUSTER-IP对于 Kubernetes 集群外部的应用程序, 您必须配置适当的网络规则以公开对服务的访问。 Kubernetes 提供了多种配置服务外部访问的选项。 请参阅 Kubernetes 文档中关于发布服务 (ServiceTypes)Ingress有关配置服务外部访问的更完整信息。

您可以使用以下方式临时暴露每个服务kubectl port-forwardutility. 运行以下示例以转发来自本地主机的流量kubectl连接到在 Kubernetes 集群内部运行的服务。

kubectl port-forward service/minio 443:443
kubectl port-forward service/minio-tenant-1-console 9443:9443