一、概述¶
MinIO 作为高性能对象存储,是与 Amazon S3 云存储服务兼容的 API,使用 MinIO 为机器学习、分析 和应用程序数据工作负载构建高性能基础架构。
对于 Kubernetes 环境,使用 MinIO Operator 实现 MinIO 部署和租户的创建。
MinIO Operator 是一个工具,该工具扩展了 k8s 的 api,可以通过 minio operator 在公有云或私有云 上来部署 MinIO Tenants。
二、组件版本¶
- Kubernetes : v1.27.4
- MinIO : RELEASE.2023-08-31T15-31-16Z
- MinIO Operator : v5.0.7
- MinIO Client : RELEASE.2023-08-30T08-02-26Z
- v5.0.0 兼容性:Kubernetes Version 1.21.0 or later.
三、安装MinIO Operator¶
本次演练中将 MinIO Tenant 安装至 minio-operator 命名空间,可根据需要替换。
3.1 安装MinIO Operator¶
kubectl-minio 是 kubectl 命令的插件,用于支持 kubectl minio 子命令。
MinIO官方文档首选使用 krew 安装 kubectl-minio 。为简化演练环境配置,我们选择直接下载方式安装。
#https://docs.min.io/minio/k8s/deployment/deploy-minio-operator.html#install-the-minio-kubernetes-operator
#可根据需要在 https://github.com/minio/operator/releases 找到可执行文件文件地址,直接下载到本地$PATH目录中
#虚机为x86_64架构Linux操作系统
[root@master01 ~]# mkdir 15
[root@master01 ~]# cd 15
[root@master01 15]#
sudo curl -L https://github.com/minio/operator/releases/download/v5.0.7/kubectl-minio_5.0.7_linux_amd64 -o /usr/local/bin/kubectl-minio
# 设置可执行文件的所有者和权限
[root@master01 15]# sudo chown root:root /usr/local/bin/kubectl-minio
[root@master01 15]# sudo chmod 755 /usr/local/bin/kubectl-minio
# 验证是否可以正常运行,观察到运行正常
[root@master01 15]# kubectl-minio version
v5.0.7
3.2 初始化安装MinIO Operator¶
更多有关初始化的参数,参考:https://min.io/docs/minio/kubernetes/upstream/reference/kubectl- minio-plugin/kubectl-minio-init.html
# --namespace minio-operator 安装MinIO Operator组件的命名空间,默认值为minio-operator
[root@master01 15]# kubectl minio init --namespace minio-operator
# 执行完上面指令后,如果在国内环境,可能因为镜像原因启动不起来,手动修改镜像为国内镜像
[root@master01 15]# kubectl edit deploy console -n minio-operator -oyaml
...
image: registry.cn-hangzhou.aliyuncs.com/github_images1024/operator:v5.0.7
...
[root@master01 15]# kubectl edit deploy minio-operator -n minio-operator -oyaml
...
image: registry.cn-hangzhou.aliyuncs.com/github_images1024/operator:v5.0.7
...
等待服务启动
[root@master01 15]# kubectl get all -n minio-operator
NAME READY STATUS RESTARTS AGE
pod/console-8679b8fbdd-9799m 1/1 Running 0 3m29s
pod/minio-operator-57567695f5-h86m9 1/1 Running 0 2m27s
pod/minio-operator-57567695f5-z2hm6 1/1 Running 0 2m27s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/console ClusterIP 192.168.195.125 <none> 9090/TCP,9443/TCP 14m
service/operator ClusterIP 192.168.167.112 <none> 4221/TCP 14m
service/sts ClusterIP 192.168.14.27 <none> 4223/TCP 14m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/console 1/1 1 1 14m
deployment.apps/minio-operator 2/2 2 2 14m
NAME DESIRED CURRENT READY AGE
replicaset.apps/console-686884ff5b 0 0 0 14m
replicaset.apps/console-8679b8fbdd 1 1 1 3m29s
replicaset.apps/minio-operator-57567695f5 2 2 2 2m27s
replicaset.apps/minio-operator-599d6c9bbc 0 0 0 14m
访问 MinIO Operator Console 的 2 种方式(任选一种即可)
1)可以通过设置本地代理的方式访问访问MinIO Operator Console。
# --namespace minio-operator 安装MinIO Operator组件的命名空间
[root@master01 15]# kubectl minio proxy --namespace minio-operator
# 访问MinIO Operator Console,获取MinIO最新版本
[root@master01 15]# curl http://localhost:9090/api/v1/check-version
# {"latest_version":"minio/minio:RELEASE.2023-08-31T15-31-16Z"}
2)通过配置 Ingress 访问 MinIO Operator Console。(生产推荐)
[root@master01 15]# vim minio-ing.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
name: minio-console-ing
namespace: minio-operator
spec:
ingressClassName: nginx
rules:
- host: minio.zhang-qing.com
http:
paths:
- backend:
service:
name: console
port:
number: 9090
path: /
pathType: Prefix
# 应用
[root@master01 15]# kaf minio-ing.yaml
# 验证
[root@master01 15]# kgi -n minio-operator
NAME CLASS HOSTS ADDRESS PORTS AGE
minio-console-ing nginx minio.zhang-qing.com 10.0.0.11 80 4m31s

获取访问 MinIO Operator 的 Token
# 获取访问所需的Token
[root@master01 15]# kubectl --namespace minio-operator get secret console-sa-secret -o jsonpath="{.data.token}" | base64 --decode
# 回显内容
eyJhbGciOiJSUzI1NiIsImtpZCI6InBremRseXZEOEJGVUNvem1GZ1p0cHJOSWNxVmRkNHVsa2JwVXR2Q3ltMDAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtaW5pby1vcGVyYXRvciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJjb25zb2xlLXNhLXNlY3JldCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJjb25zb2xlLXNhIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiMmY1OWY3YjEtN2JhZC00MzM5LThmYjYtNjI1YWEzNDY4NjkyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Om1pbmlvLW9wZXJhdG9yOmNvbnNvbGUtc2EifQ.SLJhsdp9m3Hg35LIV2DPViLU7TUsS7u9glVZa34gh8W8EsduGvsezrSbrs4eYHyJAgJMaz6JkHMrmCEWBJBGX9LS4LO3xWnU5NVpq35z9bKunnYcN_JNNg7D5XLBNlL0TISRBpoY-pM8-PIrBPU0owSDLYNRk-BBQ7pIoi0lUll5pDddezljfHu9VkR78X2Xh_-LKQTl_3cLE8xDlagpx1BUp8oMUJu-0hY4zYgampbW-8nhA370gIE7BX2WhugJQrU4M4vbocYwAvgLFIGcJBmvFlJ2KdGGvhAx18dv3mpTBUD_pCIgQ_p7UdNruodzONgyMfGVZeOfDj_-48Z_Eg

升级 MinIO Operator(可选)
当 MinIO Operator 发布更新版本时,可通过如下命令升级MinIO Operator。
# 1. 使用默认容器镜像仓库
kubectl apply -k github.com/minio/operator/\?ref\=v5.0.7
# 2. 使用指定容器镜像仓库
kubectl kustomize github.com/minio/operator/\?ref\=v5.0.7 \
| sed -e 's|image: minio/operator|image: quay.io/choral-k8s/minio-operator|g' \
| kubectl apply -f -
四、安装MinIO Tenant¶
用于在多租户环境中实现数据隔离、资源管理和安全性。
4.1 创建 StorageClass¶
[root@master01 15]#
kubectl apply -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: minio-local-storage
provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
EOF
注意:volumeBindingMode: WaitForFirstConsumer 必须要设置为 WaitForFirstConsumer 。
随机的绑定有可能导致,一个pod关联了不同主机的pv导致启动失败!!
[root@master01 15]# kubectl get sc | grep minio
minio-local-storage kubernetes.io/no-provisioner Retain WaitForFirstConsumer false 8s
4.2 创建pv¶
对 MiniO 来说,使用 Local 类型的 pv 进行数据的持久化的存储。
在每个节点创建不同的目录,用于 local 类型的本地存储目录
# master01、master02、master03节点上创建目录
mkdir -p /data/minio/{pv1,pv2,pv3,pv4}
# master01、master02、master03节点上进行验证
tree /data/minio/
/data/minio/
├── pv1
├── pv2
├── pv3
└── pv4
我这里 3 个节点,一共 12 个 volume,每个节点 4 个pv;
| 路径 | 容量 | PV名称 | 所在节点 |
|---|---|---|---|
| /data/minio/pv1 | 10G | master01-01 | master01 |
| /data/minio/pv2 | 10G | master01-02 | master01 |
| /data/minio/pv3 | 10G | master01-03 | master01 |
| /data/minio/pv4 | 10G | master01-04 | master01 |
| /data/minio/pv1 | 10G | master02-01 | master02 |
| /data/minio/pv2 | 10G | master02-02 | master02 |
| /data/minio/pv3 | 10G | master02-03 | master02 |
| /data/minio/pv4 | 10G | master02-04 | master02 |
| /data/minio/pv1 | 10G | master03-01 | master03 |
| /data/minio/pv2 | 10G | master03-02 | master03 |
| /data/minio/pv3 | 10G | master03-03 | master03 |
| /data/minio/pv4 | 10G | master03-04 | master03 |
通过以下的命令创建 Local 类型的 pv;
注意: storageClassName: minio-local-storage ,必须使用第一个步骤中的 storageclass,否则在创建集群的时候,pv和pvc的绑定就会有问题!
# values的值可以通过kubectl get node --show-labels |grep kubernetes.io/hostname进行查看
[root@master01 15]# kubectl get node --show-labels |grep kubernetes.io/hostname
# 应用
[root@master01 15]#
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolume
metadata:
name: master01-01
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master01
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master01-02
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv2
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master01
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master01-03
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv3
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master01
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master01-04
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv4
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master01
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master02-01
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master02
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master02-02
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv2
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master02
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master02-03
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv3
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master02
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master02-04
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv4
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master02
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master03-01
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master03
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master03-02
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv2
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master03
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master03-03
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv3
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master03
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: master03-04
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage
local:
path: /data/minio/pv4
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master03
EOF
每个pv都是使用local类型,节点亲和的方式和具体的节点进行绑定
[root@master01 15]# kubectl get pv,pvc |grep minio
persistentvolume/master01-01 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master01-02 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master01-03 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master01-04 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master02-01 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master02-02 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master02-03 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master02-04 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master03-01 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master03-02 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master03-03 10Gi RWO Retain Available minio-local-storage 2m9s
persistentvolume/master03-04 10Gi RWO Retain Available minio-local-storage 2m9s
4.3 创建命名空间¶
本次实战中将 MinIO Tenant 安装至 minio-tenant-1 命名空间,可根据需要替换。
[root@master01 15]# kubectl create ns minio-tenant-1
4.4 创建minio tenant集群¶
# --namespace data-minio 安装MinIO Tenant组件的命名空间
# --servers 3 MinIO服务副本数量
# --volumes 12 存储卷数量
# --capacity 20Gi 存储池容量
# --storage-class minio-local-storage 存储类名称
# --disable-tls 禁用TLS
# --image minio/minio:RELEASE.2023-08-31T15-31-16Z 指定MinIO组件版本
[root@master01 15]#
kubectl minio tenant create minio-1 \
--namespace minio-tenant-1 \
--servers 3 \
--volumes 12 \
--capacity 120Gi \
--storage-class minio-local-storage \
--image registry.cn-hangzhou.aliyuncs.com/github_images1024/minio:RELEASE.2023-08-31T15-31-16Z \
--disable-tls
- 这里我们的集群有3个节点,--servers 3, 12个卷,每个pv 10g,就是120Gi的容器(capacity);
- 注意:这里的 storageclass 这要指定 minio-local-storage。
创建后验证:
Tenant 'minio-1' created in 'minio-tenant-1' Namespace
Username: <your-access-key>
Password: <your-secret-key>
Note: Copy the credentials to a secure location. MinIO will not display these again.
APPLICATION SERVICE NAME NAMESPACE SERVICE TYPE SERVICE PORT
MinIO minio minio-tenant-1 ClusterIP 80
Console minio-1-console minio-tenant-1 ClusterIP 9090
- 需要记录上述输出结果中的 Username 和 Password 字段,用于验证访问 MinIO 服务。
查看pod的状态:
[root@master01 15]# kubectl get all -nminio-tenant-1
NAME READY STATUS RESTARTS AGE
pod/minio-1-ss-0-0 2/2 Running 0 38s
pod/minio-1-ss-0-1 2/2 Running 0 38s
pod/minio-1-ss-0-2 2/2 Running 0 38s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/minio ClusterIP 192.168.181.149 <none> 80/TCP 39s
service/minio-1-console ClusterIP 192.168.219.30 <none> 9090/TCP 39s
service/minio-1-hl ClusterIP None <none> 9000/TCP 39s
NAME READY AGE
statefulset.apps/minio-1-ss-0 3/3 38s
web 端查看 operator 中的集群状态信息

当为health的时候,说明集群已经初始化

通过命令端查看集群状态:
[root@master01 15]# kubectl minio tenant info minio-1
Tenant 'minio-1', Namespace 'minio-tenant-1', Total capacity 120 GiB
Current status: Initialized
MinIO version: registry.cn-hangzhou.aliyuncs.com/github_images1024/minio:RELEASE.2023-08-31T15-31-16Z
MinIO service: minio/ClusterIP (port 80)
Console service: minio-1-console/ClusterIP (port 9090)
POOL SERVERS VOLUMES(SERVER) CAPACITY(VOLUME)
0 3 4 10 GiB
MinIO Root User Credentials:
MINIO_ROOT_USER="PXXA60NWAQER75517TPP"
MINIO_ROOT_PASSWORD="ianfx835THjSJB7cQGBBPNDfEwbxsf9G6Gwge7uW"
升级MinIO Tenant(可选)
当MinIO发布更新版本时,可通过如下命令升级MinIO Tenant。
# --image minio/minio:RELEASE.2023-08-31T15-31-16Z 指定MinIO组件版本
[root@master01 15]#
kubectl minio tenant upgrade minio \
--namespace data-minio \
--image minio/minio:RELEASE.2023-08-31T15-31-16Z
五、实战验证¶
5.1 开启 opsdata tenant 访问¶
- 配置s3 Ingress入口规则:
# 定义资源
[root@master01 15]# vim s3-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
name: minio-s3-ing
namespace: minio-tenant-1
spec:
ingressClassName: nginx
rules:
- host: s3.zhang-qing.com
http:
paths:
- backend:
service:
name: minio
port:
number: 80
path: /
pathType: Prefix
# 应用
[root@master01 15]# kaf s3-ingress.yaml
# 验证
[root@master01 15]# kgi -n minio-tenant-1
NAME CLASS HOSTS ADDRESS PORTS AGE
minio-s3-ing nginx s3.zhang-qing.com 10.0.0.11 80 25s
5.2 安装 MinIO Client¶
MinIO Client (mc) 是 Minio 提供访问和操作服务端的客户端工具。
它可以使用 ls,cat,cp,mirror,diff,find 等UNIX命令提供了一种替代方案, 它支持文件系统和兼 容Amazon S3 的云存储服务(AWS Signature v2和v4)。
官方地址:https://min.io/docs/minio/linux/reference/minio-mc.html
#可根据需要在https://dl.min.io/client/mc/release 找到可执行文件文件地址,直接下载到本地$PATH目录中
#虚机环境为x86_64架构Linux操作系统
[root@master01 15]#
sudo curl -L https://dl.min.io/client/mc/release/linux-amd64/mc -o /usr/local/bin/mc
# 设置可执行文件的所有者和权限
[root@master01 15]# sudo chown root:root /usr/local/bin/mc
[root@master01 15]# sudo chmod 755 /usr/local/bin/mc
# 验证是否可以正常运行
[root@master01 15]# mc --version | head -1
mc version RELEASE.2025-04-08T15-39-49Z (commit-id=e929f89ceeedc48a45611382be9882db0bf1921d)
5.3 Bucket 配置与应用¶
- 添加 minio cluster 别名信息(集群内 endpoint 为 svc 的地址、集群外 endpoint 则为 ingress 的域名)
[root@master01 15]#
mc alias set k8s-s3 http://<minio-endpoint> \
<your-access-key> \
<your-secret-key>
[root@master01 15]#
mc alias set k8s-s3-internal http://minio.minio-tenant-1.svc \
<your-access-key> \
<your-secret-key>
- 创建MinIO Bucket
# 创建一个演示用Bucket,命名为`demo`
[root@master01 15]# mc mb k8s-s3/demo
Bucket created successfully `k8s-s3/demo`.
# 设置Bucket的访问策略,允许匿名下载
[root@master01 15]# mc anonymous set download k8s-s3/demo
Access permission for `k8s-s3/demo` is set to `download`
- 创建和获取对象
# 创建一个示例文件`hello.html`
[root@master01 15]# echo "hello, world." > hello.html
# 将示例文件复制到Bucket中
[root@master01 15]# mc cp ./hello.html k8s-s3/demo/html/hello.html
/root/15/hello.html: 14 B / 14 B ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 57 B/s 0s
# 访问Bucket中的示例文件
[root@master01 15]# curl http://<minio-endpoint>/demo/html/hello.html
hello, world.
六、MinIO卸载和清理(谨慎操作!)¶
6.1 删除MinIO Bucket¶
# 列出演示用Bucket中的对象
mc ls k8s-s3/demo
# 删除Bucket中指定路径的单个对象
mc rm k8s-s3/demo/html/hello.html
# 删除Bucket中指定前缀的所有对象
mc rm k8s-s3/demo/html/ --recursive --force
# 删除Bucket,若Bucket不为空,默认禁止删除,可添加`--force`参数强制删除
mc rb k8s-s3/demo # --force
# 删除关联的所有存储卷
kubectl delete pvc --all -n minio-tenant-1
kubectl delete pv --all -n minio-tenant-1
6.2 删除MinIO Tenant¶
# --namespace minio-tenant-1 安装MinIO Tenant组件的命名空间
kubectl minio tenant delete minio-1 - namespace minio-tenant-1
6.3 删除MinIO Operator¶
# --namespace minio-operator 安装MinIO Operator组件的命名空间
kubectl minio delete --namespace minio-operator
七、问题汇总¶
在部署的过程中,启动 tenant 集群无法启动,经常报错:
- reblance data...
- 数据不同步...
- 通讯异常等...
正常修复步骤:
- 1)web 界面删除 Tenant,勾选删除PVC;
- 2)删除这两个secret (minio-1-user-1, minio-1-env-configuration);
- 3)删除所有的pv;
- 4)删除底层创建的数据目录(/data/minio/pv{1,2,3,4});
- 5)重新从创建 PV 步骤开始修复;