#{ commentsCount } comment.
Kubernetes环境MinIO部署与应用
发布于2022-09-03
,最后编辑于2025-03-16
,全文约1702
字,阅读时间约4
分钟。
Kubernetes Kubernetes Operator MinIO S3 Storage Object Storage

更新记录
-
2022-09-17
MinIO
版本由RELEASE.2022-09-01T23-53-36Z
更新至RELEASE.2022-09-07T22-25-02Z
;MinIO Operator
版本由v4.4.28
更新至v4.5.0
;MinIO Client
版本由RELEASE.2022-08-28T20-08-11Z
更新至RELEASE.2022-09-16T09-16-47Z
;
-
2022-09-24
MinIO
版本由RELEASE.2022-09-07T22-25-02Z
更新至RELEASE.2022-09-22T18-57-27Z
;MinIO Operator
版本由v4.5.0
更新至v4.5.1
;
-
2022-10-01
MinIO
版本由RELEASE.2022-09-22T18-57-27Z
更新至RELEASE.2022-09-25T15-44-53Z
;
-
2022-10-14
MinIO
版本由RELEASE.2022-09-25T15-44-53Z
更新至RELEASE.2022-10-08T20-11-00Z
;MinIO Operator
版本由v4.5.1
更新至v4.5.2
;MinIO Client
版本由RELEASE.2022-09-16T09-16-47Z
更新至RELEASE.2022-10-09T21-10-59Z
;
-
2022-10-20
MinIO
版本由RELEASE.2022-10-08T20-11-00Z
更新至RELEASE.2022-10-15T19-57-03Z
;MinIO Operator
版本由v4.5.2
更新至v4.5.3
;MinIO Client
版本由RELEASE.2022-10-09T21-10-59Z
更新至RELEASE.2022-10-12T18-12-50Z
;
-
2022-11-08
MinIO
版本由RELEASE.2022-10-15T19-57-03Z
更新至RELEASE.2022-10-29T06-21-33Z
;MinIO Operator
版本由v4.5.3
更新至v4.5.4
;MinIO Client
版本由RELEASE.2022-10-12T18-12-50Z
更新至RELEASE.2022-10-29T10-09-23Z
;
-
2022-11-12
MinIO
版本由RELEASE.2022-10-29T06-21-33Z
更新至RELEASE.2022-11-11T03-44-20Z
;MinIO Client
版本由RELEASE.2022-10-29T10-09-23Z
更新至RELEASE.2022-11-07T23-47-39Z
;
-
2022-11-18
MinIO
版本由RELEASE.2022-11-11T03-44-20Z
更新至RELEASE.2022-11-17T23-20-09Z
;MinIO Client
版本由RELEASE.2022-11-07T23-47-39Z
更新至RELEASE.2022-11-17T21-20-39Z
;
-
2022-12-08
MinIO
版本由RELEASE.2022-11-17T23-20-09Z
更新至RELEASE.2022-12-07T00-56-37Z
;MinIO Operator
版本由v4.5.4
更新至v4.5.5
;MinIO Client
版本由RELEASE.2022-11-17T21-20-39Z
更新至RELEASE.2022-12-02T23-48-47Z
;
-
2022-12-30
MinIO
版本由RELEASE.2022-12-07T00-56-37Z
更新至RELEASE.2022-12-12T19-27-27Z
;MinIO Client
版本由RELEASE.2022-12-02T23-48-47Z
更新至RELEASE.2022-12-13T00-23-28Z
;
-
2023-01-07
MinIO
版本由RELEASE.2022-12-12T19-27-27Z
更新至RELEASE.2023-01-02T09-40-09Z
;MinIO Operator
版本由v4.5.5
更新至v4.5.6
;MinIO Client
版本由RELEASE.2022-12-13T00-23-28Z
更新至RELEASE.2022-12-24T15-21-38Z
;
-
2023-01-28
MinIO
版本由RELEASE.2023-01-02T09-40-09Z
更新至RELEASE.2023-01-25T00-19-54Z
;MinIO Operator
版本由v4.5.6
更新至v4.5.8
;MinIO Client
版本由RELEASE.2022-12-24T15-21-38Z
更新至RELEASE.2023-01-11T03-14-16Z
;
-
2023-02-03
MinIO
版本由RELEASE.2023-01-25T00-19-54Z
更新至RELEASE.2023-01-31T02-24-19Z
;MinIO Client
版本由RELEASE.2023-01-11T03-14-16Z
更新至RELEASE.2023-01-28T20-29-38Z
;
-
2023-02-11
MinIO
版本由RELEASE.2023-01-31T02-24-19Z
更新至RELEASE.2023-02-10T18-48-39Z
;
-
2023-03-03
MinIO
版本由RELEASE.2023-02-10T18-48-39Z
更新至RELEASE.2023-02-27T18-10-45Z
;MinIO Client
版本由RELEASE.2023-01-28T20-29-38Z
更新至RELEASE.2023-02-28T00-12-59Z
;
-
2023-03-22
MinIO
版本由RELEASE.2023-02-27T18-10-45Z
更新至RELEASE.2023-03-20T20-16-18Z
;MinIO Client
版本由RELEASE.2023-02-28T00-12-59Z
更新至RELEASE.2023-03-20T17-17-53Z
;
-
2023-03-27
MinIO
版本由RELEASE.2023-03-20T20-16-18Z
更新至RELEASE.2023-03-24T21-41-23Z
;MinIO Client
版本由RELEASE.2023-03-20T17-17-53Z
更新至RELEASE.2023-03-23T20-03-04Z
;
-
2023-04-14
MinIO
版本由RELEASE.2023-03-24T21-41-23Z
更新至RELEASE.2023-04-13T03-08-07Z
;MinIO Operator
版本由v4.5.8
更新至v5.0.3
;MinIO Client
版本由RELEASE.2023-03-23T20-03-04Z
更新至RELEASE.2023-04-12T02-21-51Z
;
-
2023-06-27
MinIO
版本由RELEASE.2023-04-13T03-08-07Z
更新至RELEASE.2023-06-23T20-26-00Z
;MinIO Operator
版本由v5.0.3
更新至v5.0.5
;MinIO Client
版本由RELEASE.2023-04-12T02-21-51Z
更新至RELEASE.2023-06-23T18-12-07Z
;
-
2023-07-24
MinIO
版本由RELEASE.2023-06-23T20-26-00Z
更新至RELEASE.2023-07-21T21-12-44Z
;MinIO Operator
版本由v5.0.5
更新至v5.0.6
;MinIO Client
版本由RELEASE.2023-06-23T18-12-07Z
更新至RELEASE.2023-07-21T20-44-27Z
;
-
2023-08-08
MinIO
版本由RELEASE.2023-07-21T21-12-44Z
更新至RELEASE.2023-08-04T17-40-21Z
;MinIO Operator
版本由v5.0.6
更新至v5.0.7
;MinIO Client
版本由RELEASE.2023-07-21T20-44-27Z
更新至RELEASE.2023-08-01T23-30-57Z
;
-
2023-09-03
MinIO
版本由RELEASE.2023-08-04T17-40-21Z
更新至RELEASE.2023-08-31T15-31-16Z
;MinIO Client
版本由RELEASE.2023-08-01T23-30-57Z
更新至RELEASE.2023-08-30T08-02-26Z
;
-
2023-11-18
MinIO
版本由RELEASE.2023-08-31T15-31-16Z
更新至RELEASE.2023-11-15T20-43-25Z
;MinIO Operator
版本由v5.0.7
更新至v5.0.11
;MinIO Client
版本由RELEASE.2023-08-30T08-02-26Z
更新至RELEASE.2023-11-15T22-45-58Z
;
-
2024-01-01
MinIO
版本由RELEASE.2023-11-15T20-43-25Z
更新至RELEASE.2023-12-23T07-19-11Z
;MinIO Client
版本由RELEASE.2023-11-15T22-45-58Z
更新至RELEASE.2023-12-23T08-47-21Z
;
-
2024-03-31
MinIO
版本由RELEASE.2023-12-23T07-19-11Z
更新至RELEASE.2024-03-30T09-41-56Z
;MinIO Operator
版本由v5.0.11
更新至v5.0.14
;MinIO Client
版本由RELEASE.2023-12-23T08-47-21Z
更新至RELEASE.2024-03-30T15-29-52Z
;
-
2024-09-30
MinIO
版本由RELEASE.2024-03-30T09-41-56Z
更新至RELEASE.2024-09-09T16-59-28Z
;MinIO Operator
版本由v5.0.14
更新至v6.0.3
;MinIO Client
版本由RELEASE.2024-03-30T15-29-52Z
更新至RELEASE.2024-09-09T07-53-10Z
;
-
2025-01-26
MinIO
版本由RELEASE.2024-09-09T16-59-28Z
更新至RELEASE.2025-01-20T14-49-07Z
;MinIO Operator
版本由v6.0.3
更新至v7.0.0
;MinIO Client
版本由RELEASE.2024-09-09T07-53-10Z
更新至RELEASE.2025-01-17T23-25-50Z
;
-
2025-03-16
MinIO
版本由RELEASE.2025-01-20T14-49-07Z
更新至RELEASE.2025-03-12T18-04-18Z
;MinIO Client
版本由RELEASE.2025-01-17T23-25-50Z
更新至RELEASE.2025-03-12T17-29-24Z
;
概述¶
本文用于整理基于Kubernetes环境的MinIO部署与应用,搭建S3兼容的分布式对象存储服务,作为后续演练项目的前置环境准备。
随着各相关组件版本的更新,笔者将在验证通过后对本文进行补充和更新,请参考更新记录。
本次演练环境为Kubernetes集群环境,环境配置可参考笔者另一篇笔记《Kubernetes集群部署笔记》。
本次演练使用Traefik作为Ingress Controller实现,环境配置可参考笔者另一篇笔记《Kubernetes环境Traefik部署与应用》。
组件版本¶
-
MinIO
RELEASE.2025-03-12T18-04-18Z
-
MinIO Operator
v7.0.0
-
MinIO Client
RELEASE.2025-03-12T17-29-24Z
配置过程¶
准备工作¶
-
添加Helm仓库
添加用于安装
minio-operator
和minio-tenant
的Helm仓库。1helm repo add minio-operator https://operator.min.io/ 2helm repo update minio-operator
-
创建命名空间
本次演练中将MinIO Operator安装至
minio-operator
命名空间,将MinIO Tenant安装至minio-tenants
命名空间,可根据需要替换。1kubectl create namespace minio-operator 2kubectl create namespace minio-tenants
-
创建TLS证书Secret
从已准备好的证书
key
文件和crt
文件创建Secret
。1kubectl create secret tls local-choral-io-tls -n apps-gitlab \ 2 --key=local.choral.io.key --cert=local.choral.io.crt
安装MinIO Operator¶
本次演练中将MinIO Tenant安装至minio-operator
命名空间,可根据需要替换。
-
安装MinIO Operator
1# operator.env[0].name=OPERATOR_STS_ENABLED 设置环境变量`OPERATOR_STS_ENABLED`的值 2# operator.env[0].value=off 设置环境变量`OPERATOR_STS_ENABLED`的值为`off`,禁用STS服务 3helm upgrade --install --namespace minio-operator \ 4 --set operator.env[0].name=OPERATOR_STS_ENABLED \ 5 --set operator.env[0].value=off \ 6 minio-operator minio-operator/operator --version 7.0.0
安装MinIO Tenant¶
本次演练中将MinIO Tenant安装至minio-tenants
命名空间,可根据需要替换。
-
创建MinIO Tenant
1# tenant.name=minio-default 设置MinIO Tenant实例的名称 2# tenant.image.tag=RELEASE.2025-03-12T18-04-18Z 指定MinIO镜像的版本 3# tenant.pools[0].name=pool-0 设置存储池名称 4# tenant.pools[0].servers=3 设置存储池中MinIO服务器数量 5# tenant.pools[0].volumesPerServer=3 设置每个服务器的存储卷数量 6# tenant.pools[0].storageClassName=local-path 指定分配PVC的存储类 7# tenant.pools[0].size=1Gi 定义存储卷的大小 8# tenant.certificate.requestAutoCert=false 禁用自动申请证书(使用预配置的证书) 9# tenant.configuration.name=minio-default-env-configuration 指定环境变量Config Map名称 10# tenant.configSecret.name=minio-default-env-configuration 指定密钥配置Secret名称 11# ingress.api.enabled=true 开启MinIO Tenant的Ingress访问 12# ingress.api.host=minio.local.choral.io 设置MinIO Tenant服务的访问域名 13# ingress.api.tls[0].secretName=local-choral-io-tls 指定TLS证书的Secret名称 14# ingress.api.annotations."traefik\.ingress\.kubernetes\.io/router\.entrypoints"=websecure 仅限HTTPS访问 15# ingress.console.enabled=true 开启MinIO Console的Ingress访问 16# ingress.console.host=minio-console.local.choral.io 定义MinIO Console服务的访问域名 17# ingress.console.tls[0].secretName=local-choral-io-tls 指定TLS证书的Secret名称 18# ingress.console.annotations."traefik\.ingress\.kubernetes\.io/router\.entrypoints"=websecure 仅限HTTPS访问 19helm upgrade --install --namespace minio-tenants \ 20 --set tenant.name=minio-default \ 21 --set tenant.image.tag=RELEASE.2025-03-12T18-04-18Z \ 22 --set tenant.pools[0].name=pool-0 \ 23 --set tenant.pools[0].servers=3 \ 24 --set tenant.pools[0].volumesPerServer=3 \ 25 --set tenant.pools[0].storageClassName=local-path \ 26 --set tenant.pools[0].size=1Gi \ 27 --set tenant.certificate.requestAutoCert=false \ 28 --set tenant.configuration.name=minio-default-env-configuration \ 29 --set tenant.configSecret.name=minio-default-env-configuration \ 30 --set ingress.api.enabled=true \ 31 --set ingress.api.host=minio.local.choral.io \ 32 --set ingress.api.tls[0].secretName=local-choral-io-tls \ 33 --set ingress.api.annotations."traefik\.ingress\.kubernetes\.io/router\.entrypoints"=websecure \ 34 --set ingress.console.enabled=true \ 35 --set ingress.console.host=minio-console.local.choral.io \ 36 --set ingress.console.tls[0].secretName=local-choral-io-tls \ 37 --set ingress.console.annotations."traefik\.ingress\.kubernetes\.io/router\.entrypoints"=websecure \ 38 minio-default minio-operator/tenant --version 7.0.0
-
获取访问MinIO Tenant的认证信息
当MinIO发布更新版本时,可通过如下命令升级MinIO Tenant。
1kubectl get secret -n minio-tenants minio-default-env-configuration -o jsonpath="{.data['config\.env']}" | base64 --decode 2# export MINIO_ROOT_USER="minio" 3# export MINIO_ROOT_PASSWORD="minio123"
安装MinIO Client¶
-
安装MinIO Client
1# 可根据需要在 https://dl.min.io/client/mc/release 找到可执行文件文件地址,直接下载到本地$PATH目录中 2# 笔者本地电脑为`x86_64`架构`Linux`操作系统 3sudo curl -L https://dl.min.io/client/mc/release/linux-amd64/mc -o /usr/local/bin/mc 4 5# 设置可执行文件的所有者和权限 6sudo chown root:root /usr/local/bin/mc 7sudo chmod 755 /usr/local/bin/mc 8 9# 验证是否可以正常运行 10mc --version | head -1 11# mc version RELEASE.2025-03-12T17-29-24Z (commit-id=c1d5d4cbb4caf05afef3ea06a91a56bd778336de)
Bucket配置与应用¶
-
设置服务别名
1mc alias set choral-local https://minio.local.choral.io minio minio123
-
创建MinIO Bucket
1# 创建一个演示用Bucket,命名为`demo` 2mc mb choral-local/demo 3 4# 设置Bucket的访问策略,允许匿名下载 5mc anonymous set download choral-local/demo
-
创建和获取对象
1# 创建一个示例文件`hello.html` 2echo "hello, world." > hello.html 3 4# 将示例文件复制到Bucket中 5mc cp ./hello.html choral-local/demo/html/hello.html 6 7# 访问Bucket中的示例文件 8curl https://minio.local.choral.io/demo/html/hello.html 9# hello, world.
卸载和清理(可选)¶
-
删除MinIO Bucket
1# 列出演示用Bucket中的对象 2mc ls choral-local/demo 3# 删除Bucket中指定路径的单个对象 4mc rm choral-local/demo/html/hello.html 5# 删除Bucket中指定前缀的所有对象 6mc rm choral-local/demo/html/ --recursive --force 7# 删除Bucket,若Bucket不为空,默认禁止删除,可添加`--force`参数强制删除 8mc rb choral-local/demo # --force
-
删除MinIO Tenant
1helm uninstall --namespace minio-tenants minio-default
-
删除MinIO Operator
1helm uninstall --namespace minio-operator minio-operator
-
删除PVCs
1# 删除关联的存储卷声明 2kubectl delete pvc --namespace minio-tenants data{0,1,2}-minio-default-pool-0-{0,1,2}