此过程记录了使用 MinIO Operator Console 部署 MinIO Tenant 的步骤。
Operator Console 提供了一个丰富的用户界面,用于在 Kubernetes 基础设施上部署和管理 MinIO 租户。安装 MinIOKubernetes Operator自动安装和配置 Operator Console。
本文档假定您熟悉所有引用的 Kubernetes 概念、工具和流程。虽然本文档可能提供有关配置或部署 Kubernetes 相关资源的指导 这些指导基于最大努力原则,不能替代官方文档Kubernetes Documentation.
操作员控制台需要MinIO Kubernetes Operator。此 过程假设使用最新的稳定 Operator 版本 4.4.16。
看在 Kubernetes 上部署 MinIO Operator有关部署 MinIO Operator 的完整文档
运行以下命令,使用 Kubernetes 安装 MinIO Operator 和 Pluginkrew插件管理器:
kubectl krew update
kubectl krew install minio
查看krew 安装文档有关具体说明。
您也可以下载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。
从 v4.0.0 开始,MinIO Operator 需要 Kubernetes 1.19.0 及更高版本。
Kubernetes 基础设施和thekubectlCLI工具必须具有相同的
1.19.0+版本。
此过程假设主机已kubectl已安装并
配置了访问目标 Kubernetes 集群的权限。主机必须可以访问网页浏览器应用程序。
MinIO强烈建议在每个节点上使用本地连接的驱动器来支持MinIO租户。MinIO严格的"写后读"和"写后列"一致性模型要求使用本地磁盘文件系统(xfs、ext4等)。MinIO在使用本地连接驱动器时也展现出最佳性能。
MinIO 自动生成Persistent Volume Claims (PVC)作为部署 MinIO 租户的一部分。Operator 会为租户中的每个卷生成一个 PVC。plus两个 PVC 用于支持收集租户指标和日志。例如,部署一个包含 16 个卷的租户需要 18 个(16 + 2)PVCPV.
此过程使用 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 租户配置的所有持久卷
都使用此存储类。
使用kubectl minio proxy用于在本地主机和 MinIO Operator Console 之间临时转发流量的命令:
kubectl minio proxy
该命令返回类似于以下内容的输出:
Starting port forward of the Console UI.
To connect open a browser and go to http://localhost:9090
Current JWT to login: TOKEN
打开浏览器访问指定URL,并在登录页面输入JWT Token。您将看到租户page:
点击+ 创建租户开始创建 MinIO 租户。
The设置pane 包含 MinIO Tenant 的所有核心配置设置。
标有星号的设置*是必需:
字段 |
描述 |
|---|---|
名称 |
MinIO 租户的名称 |
命名空间 |
要在其中部署租户的 Kubernetes 命名空间。您可以通过选择加号来创建命名空间。+如果图标不存在。 Operator 最多支持一每个命名空间一个 MinIO 租户。 |
存储类 |
指定 Operator 在为租户生成持久卷声明时使用的 Kubernetes 存储类。 此过程假设使用DirectCSI存储类别 |
服务器数量 |
要在租户中部署的 MinIO 服务器 Pod 总数。 默认情况下,Operator 使用 Pod 反亲和性,以便 Kubernetes 集群必须每个 MinIO 服务器 Pod 至少拥有一个工作节点。使用Pod 放置窗格用于修改租户的 Pod 调度设置。 |
每台服务器的驱动器数量 |
每个 Server 请求的存储卷(Persistent Volume Claims)数量。 Operator 显示总容量在...之下资源分配section。Operator 会生成同等数量的 PVC加二用于支持租户服务(指标和日志搜索)。 指定的存储类 必须对应一组足够数量的持久卷,以匹配每个生成的PVC。 |
总大小 |
租户的总原始存储大小。请同时指定总存储大小和theUnit该存储的容量。所有存储 单位均采用国际单位制值,例如 Gi = GiB = 10243字节。 Operator 显示驱动器容量在...之下资源分配section。Operator 将此值设置为每个生成的 PVC 中请求的存储容量。 指定的存储类 必须对应一组容量足以匹配每个生成的 PVC 的 Persistent Volumes。 |
每个节点的内存 [GiB] |
指定要为每个 MinIO 服务器 Pod 分配的内存(RAM)总量。请参阅内存分配有关设置此值的指导。 Kubernetes 集群必须确保工作节点有足够的空闲 RAM 来满足 Pod 的请求。 |
擦除码奇偶校验 |
为部署设置的擦除码奇偶校验。 Operator 显示所选奇偶校验及其对部署的影响,位于Erasure Code Configurationsection. 纠删码奇偶校验定义了集群上数据的整体弹性和可用性。 较高的奇偶校验值可以提高对驱动器或节点故障的容忍度,但会牺牲总存储容量。参见minio-erasure-coding获取更完整的文档。 |
选择创建使用当前配置创建租户。 而所有后续章节都是可选的, MinIO 建议在部署租户之前查看它们。
The配置section 包含 MinIO 租户及其支持服务的可选配置设置。
字段 |
描述 |
|---|---|
暴露服务 |
默认情况下,MinIO Operator 会指示 MinIO 租户服务向 Kubernetes 集群负载均衡器请求一个可外部访问的 IP 地址(如果可用)。 大多数公共云 Kubernetes 基础设施都包含满足这些要求的全局负载均衡器。其他 Kubernetes 发行版可能包含一个能够响应这些请求的负载均衡器。 您可以通过切换选项来指示租户不要提出此请求关对于 MinIO 服务和控制台服务。 |
覆盖租户默认设置 |
MinIO Operator 为 Pod 设置的 Kubernetes 安全上下文默认值为 您可以修改 Security Context 来指示 MinIO 使用不同的用户 ID、组 ID 或 FsGroup ID 运行。您还可以指示 MinIO 不要以 Root 用户身份运行。 |
覆盖日志搜索默认设置 |
MinIO Operator 会部署一个日志搜索服务(SQL 数据库和日志搜索 API),以支持 MinIO 租户控制台中的审计日志搜索功能。 您可以修改安全上下文,使用不同的用户、组或文件系统组ID来运行相关的Pod命令。您还可以指示Pod不要以Root用户身份运行命令。 您也可以修改与支持 Log Search 服务的 PVC 关联的存储类和请求容量。 |
覆盖 Prometheus 搜索默认设置 |
MinIO Operator 部署了一个 Prometheus 服务,用于支持 MinIO 租户控制台中的详细指标监控。 您可以修改安全上下文,使用不同的用户、组或文件系统组ID来运行相关的Pod命令。您还可以指示Pod不要以Root用户身份运行命令。 您也可以修改与支持 Prometheus 服务相关的 PVC 所关联的存储类和请求容量。 |
The图像section 包含 MinIO 租户使用的容器镜像设置。
字段 |
描述 |
|---|---|
MinIO 的镜像 |
用于 MinIO Server 的容器镜像。请参阅MinIO Quay或者MinIO DockerHub有效标签列表的存储库。 |
Log Search API 的 Image |
用于 MinIO Log Search API 的容器镜像。 |
KES Image |
用于 MinIO 的容器镜像KES. |
日志搜索 Postgres 镜像
日志搜索 Postgres 初始化镜像
|
用于启动支持日志搜索 API 的 PostgreSQL 服务的容器镜像 |
Prometheus Image
Prometheus Sidecar 镜像
Prometheus Init Image
|
用于启动支持 Log Search API 的 Prometheus 服务的容器镜像。 |
ThePod 放置section 包含 MinIO 租户的 Pod 调度器设置。
字段 |
描述 |
|---|---|
无 |
禁用租户的 Pod 调度约束。这将允许 Kubernetes 将多个租户 Pod 调度到同一节点上。 这可能会降低弹性,因为单个 Kubernetes 工作节点可以托管多个 MinIO Pod。如果该工作节点宕机或丢失,对象也可能不可用或丢失。 请仅在早期开发或沙盒环境中使用此设置,且工作节点数量有限。 |
默认(Pod 反亲和性) |
指示 Operator 设置反亲和性规则,确保任何 Kubernetes 工作节点都不能为当前租户托管超过一个 MinIO 服务器 Pod。 |
节点选择器 |
指示操作员设置节点选择器,以便 Pod 仅部署到标签与选择器匹配的 Kubernetes 工作节点上。 |
The身份提供者section 包含身份提供者MinIO租户的设置。这包括配置外部IDP,例如OpenID or Active Directory / LDAP.
字段 |
描述 |
|---|---|
内置 |
为 Operator 配置额外的内部 MinIO 用户,以便在部署租户时创建。 |
OpenID |
配置一个与 OpenID Connect 兼容的服务作为外部身份提供商(例如 Keycloak、Okta、Google、Facebook、Dex)来管理 MinIO 用户。 |
Active Directory |
配置 Active Directory 或 OpenLDAP 服务作为外部身份提供商来管理 MinIO 用户。 |
The安全section 包含 MinIO Tenant 的 TLS 证书设置。
字段 |
描述 |
|---|---|
启用 TLS |
启用或禁用 MinIO 租户的 TLS。 |
启用 AutoCert |
指示 Operator 生成证书签名请求,以便提交给 Kubernetes TLS API。 MinIO租户使用生成的证书来启用和建立TLS连接。 |
自定义证书 |
为 MinIO 租户指定一个或多个自定义 TLS 证书。 MinIO 支持服务器名称指示(SNI),使得租户能够根据请求主机名和证书主题备用名称选择合适的 TLS 证书。 MinIO 还支持指定证书颁发机构证书,用于验证由该 CA 签发的客户端证书。 |
The加密section 包含服务器端加密MinIO 租户的设置。
启用 SSE 还会部署一个 MinIOKES租户中的服务,用于支持 SSE 操作。
字段 |
描述 |
|---|---|
Vault |
配置Hashicorp Vault作为存储根加密密钥的外部 KMS。请参阅minio-sse-vault有关显示字段的指南。 |
AWS |
配置AWS Secrets Manager作为存储根加密密钥的外部 KMS。请参阅minio-sse-aws有关显示字段的指南。 |
GCP |
配置Google Cloud Platform Secret Manager作为外部 KMS 用于 存储根加密密钥。请参阅minio-sse-gcp有关所显示字段的指导。 |
Azure |
配置Azure Key Vault作为存储根加密密钥的外部KMS。参见minio-sse-azure有关显示字段的指南。 |
选择创建随时可以开始部署过程。 MinIO Operator 会显示 root 用户凭据一次作为部署租户的一部分。将这些凭据复制到安全位置。
您可以从监控租户创建过程租户视图。状态在整个部署过程中更新列。
租户部署可能需要几分钟才能完成。一旦状态读作已初始化点击租户查看其详细信息。
每个选项卡都提供有关 MinIO Tenant 的更多详细信息或配置选项。
METRICS- 显示从 MinIO 租户收集的指标。
安全- 提供与 TLS 相关的配置选项。
POOLS- 支持通过添加更多服务器池来扩展租户。
LICENSE- 请输入子网许可证
MinIO Operator 为 MinIO Tenant 创建服务。使用kubectl get svc -n NAMESPACE查看已部署服务的命令:
kubectl get svc -n minio-tenant-1
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
minio LoadBalancer 10.97.114.60 <pending> 443:30979/TCP 2d3h
minio-tenant-1-console LoadBalancer 10.106.103.247 <pending> 9443:32095/TCP 2d3h
minio-tenant-1-hl ClusterIP None <none> 9000/TCP 2d3h
minio-tenant-1-log-hl-svc ClusterIP None <none> 5432/TCP 2d3h
minio-tenant-1-log-search-api ClusterIP 10.103.5.235 <none> 8080/TCP 2d3h
minio-tenant-1-prometheus-hl-svc ClusterIP None <none> 9090/TCP 7h39m
Theminioservice 对应 MinIO Tenant 服务。应用程序应使用此服务对 MinIO Tenant 执行操作。
The*-console服务对应于MinIO Console管理员应使用此服务访问 MinIO 控制台并对 MinIO 租户执行管理操作。
其余服务支持租户操作,不供用户或管理员使用。
默认情况下,每个服务仅在 Kubernetes 集群内部可见。
部署在集群内的应用程序可以使用这些服务进行访问CLUSTER-IP.
Kubernetes 集群外部的应用程序可以通过以下方式访问服务:EXTERNAL-IP. This value is only populated for Kubernetes clusters
configured for Ingress or a similar network access service. Kubernetes provides
multiple options for configuring external access to services. See the Kubernetes
documentation on
(注意:原文末尾的"on"后面似乎缺少内容,建议补充完整信息。根据现有内容,这段文字已经是中英文混合状态,按照规则只需保持中文部分不变,英文部分需要翻译:)
. 此值仅针对配置了 Ingress 或类似网络访问服务的 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