此过程记录了使用 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 Kubernetes 插件需要MinIO Kubernetes Operator。此 过程假设使用最新的稳定 Operator 版本 4.4.16。
看在 Kubernetes 上部署 MinIO Operator有关部署 MinIO Operator 的完整文档
从 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 租户配置的所有持久卷
都使用此存储类。
以下代码下载 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检查插件是否已安装。
使用kubectl create namespace为 MinIO 租户创建命名空间的命令:
kubectl create namespace minio-tenant-1
MinIO 支持完全一致的一每个命名空间一个租户。
使用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 租户的名称。 |
|
The number of |
|
集群中的卷数量。 |
|
集群的总容量。 |
|
Kubernetes |
|
部署 MinIO 租户的 Kubernetes 命名空间。 |
成功时,该命令返回以下内容:
租户的管理员用户名和密码。请将这些凭据存储在安全位置,例如受密码保护的密钥管理器。MinIO不会不再次显示这些凭据。
用于连接到 MinIO 控制台的服务。该控制台支持对租户执行管理操作,例如配置身份和访问管理(IAM)和存储桶配置。
为连接到 MinIO 租户而创建的服务。应用程序应使用此服务来对 MinIO 租户执行操作。
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