MinIO 是一个 Kubernetes 原生高性能对象存储,提供与 S3 兼容的 API。MinIO Kubernetes Operator 支持将 MinIO 租户部署到私有和公共云基础设施("混合"云)上。
以下过程将在 Kubernetes 基础设施上安装最新稳定版 (4.4.16) 的 MinIO Operator 和 MinIO Plugin:
MinIO Operator 会安装一个Custom Resource Document (CRD)支持将 MinIO 租户描述为 Kubernetes对象. 参见 MinIO OperatorCRD 参考有关 MinIO CRD 的完整文档。
MinIO Kubernetes 插件为在 Kubernetes 集群上部署和管理 MinIO 租户提供了原生支持kubectl minio命令。
此过程假设一个通用的 Kubernetes 环境。以下 过程为某些 Kubernetes 提供商提供了更具体的指导:
本文档假定您熟悉所有引用的 Kubernetes 概念、工具和流程。虽然本文档可能提供有关配置或部署 Kubernetes 相关资源的指导 这些指导基于最大努力原则,不能替代官方文档Kubernetes Documentation.
从 v4.0.0 开始,MinIO Operator 和 MinIO Kubernetes Plugin 需要
Kubernetes 1.19.0 及更高版本。Kubernetes 基础设施和thekubectlCLI工具必须具有相同的1.19.0+版本。
在 v4.0.0 之前,MinIO Operator 和 Plugin 需要 Kubernetes 1.17.0。必须将您的 Kubernetes 基础设施升级到 1.19.0 或更高版本,以使用 MinIO Operator 或 Plugin v4.0.0 或更高版本。
krew此过程使用 Kuberneteskrew用于安装 MinIO Kubernetes Operator 和插件的插件管理器。
查看krew 安装文档有关具体说明。
MinIO Operator 会自动生成 TLS 证书签名请求
(CSR) 并使用 Kubernetescertificates.k8s.io
TLS证书管理API创建已签名的TLS证书。
因此,MinIO Operator需要Kuberneteskube-controller-manager配置包括以下内容配置设置:
--cluster-signing-key-file- 指定用于签署集群范围证书的PEM编码RSA或ECDSA私钥。
--cluster-signing-cert-file- 指定用于颁发集群范围证书的PEM编码x.509证书颁发机构证书。
如果Kubernetes集群未配置为响应生成的CSR,Operator将无法完成初始化。某些Kubernetes提供商默认不指定这些配置值。
要验证是否kube-controller-manager具有所需的
设置,请使用以下命令。替换$CLUSTER-NAMEKubernetes 集群的名称:
kubectl get pod kube-controller-manager-$CLUSTERNAME-control-plane \
-n kube-system -o yaml
确认输出包含高亮显示的行。上述示例命令的输出可能与您终端中的输出有所不同:
spec:
containers:
- command:
- kube-controller-manager
- --allocate-node-cidrs=true
- --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
- --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
- --bind-address=127.0.0.1
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --cluster-cidr=10.244.0.0/16
- --cluster-name=my-cluster-name
- --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
- --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
...
重要
MinIO Operator 使用指定的证书颁发机构(CA)自动为所有 MinIO 租户 Pod 生成 TLS 证书。Kubernetes 集群外部的客户端必须信任 Kubernetes 集群 CA 才能连接到 MinIO Operator 或 MinIO 租户。
无法信任 Kubernetes 集群 CA 的客户端可以尝试禁用与 MinIO Operator 或 MinIO Tenant 连接的 TLS 验证。
或者,您可以生成由已知可信 CA 签名的 x.509 TLS 证书,并将这些证书传递给 MinIO 租户。 请参阅用户生成的TLS证书用于MinIO对象存储获取更完整的文档。
运行以下命令,使用 Kubernetes 安装 MinIO Operator 和 Pluginkrew插件管理器:
kubectl krew update
kubectl krew install minio
您也可以下载kubectl-minio直接安装插件到您的系统PATH以下代码下载 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 version
输出应显示 Operator 版本为 4.4.16。
运行kubectl minio init初始化 MinIO Operator 的命令:
kubectl minio init
该命令使用以下默认设置初始化 MinIO Operator:
将 Operator 部署到minio-operatornamespace.
指定kubectl minio init --namespace将操作符部署到不同命名空间的参数。
使用cluster.local在配置操作器的 DNS 主机名时作为集群域。指定kubectl minio init --cluster-domain参数以设置不同的集群域值。
重要
记录初始化 MinIO Operator 时使用的所有参数。
要验证安装,请运行以下命令:
kubectl get all --namespace minio-operator
如果您使用自定义命名空间初始化了 Operator,请替换minio-operator使用该命名空间。
输出类似于以下内容:
NAME READY STATUS RESTARTS AGE
pod/console-59b769c486-cv7zv 1/1 Running 0 81m
pod/minio-operator-7976b4df5b-rsskl 1/1 Running 0 81m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/console ClusterIP 10.105.218.94 <none> 9090/TCP,9443/TCP 81m
service/operator ClusterIP 10.110.113.146 <none> 4222/TCP,4233/TCP 81m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/console 1/1 1 1 81m
deployment.apps/minio-operator 1/1 1 1 81m
NAME DESIRED CURRENT READY AGE
replicaset.apps/console-59b769c486 1 1 1 81m
replicaset.apps/minio-operator-7976b4df5b 1 1 1 81m
运行kubectl minio proxy临时转发流量的命令MinIO Operator Console连接到您的本地机器:
kubectl minio proxy
命令输出中包含一个JWT令牌,您必须使用它来登录Operator Console。
您可以部署一个新的MinIO Tenant从 Operator Dashboard。