Skip to content

1. 卸载 minio 操作

1.1 查看当前的tenant

bash
[root@kube-master minio]#  kubectl minio tenant list

Tenant 'minio-1', Namespace 'minio-tenant-1', Total capacity 12 GiB

  Current status: Initialized
  MinIO version: registry.cn-zhangjiakou.aliyuncs.com/hsuing/minio:RELEASE.2023-04-20T17-56-55Z
[root@kube-master minio]#  kubectl minio tenant list

Tenant 'minio-1', Namespace 'minio-tenant-1', Total capacity 12 GiB

  Current status: Initialized
  MinIO version: registry.cn-zhangjiakou.aliyuncs.com/hsuing/minio:RELEASE.2023-04-20T17-56-55Z

1.2 卸载minio

1.2.1 清理minio租户

bash
kubectl minio tenant delete <tenent_name> -n 

#如
kubectl minio tenant delete minio-tenant-1 --namespace minio-tenant-1
kubectl minio tenant delete <tenent_name> -n 

#如
kubectl minio tenant delete minio-tenant-1 --namespace minio-tenant-1

1.2.2 删除pvc、pv

bash
kubectl delete pvc --all -n <namespace>
kubectl delete pv --all -n <namespace>
kubectl delete pvc --all -n <namespace>
kubectl delete pv --all -n <namespace>

在每个节点将/data/minio目录删除,重新创建

ls -al
total 0
drwxrwsrwx 3 root      1000  24 Apr 24 10:52 .
drwxrwxrwx 6 root      root  50 Apr 22 17:00 ..
drwxrwsrwx 9 adminuser 1000 124 Apr 25 10:36 .minio.sys
ls -al
total 0
drwxrwsrwx 3 root      1000  24 Apr 24 10:52 .
drwxrwxrwx 6 root      root  50 Apr 22 17:00 ..
drwxrwsrwx 9 adminuser 1000 124 Apr 25 10:36 .minio.sys

1.2.3 删除命名空间

bash
kubectl delete ns minio-tenant-1
kubectl delete ns minio-tenant-1

1.2.4 清理minio-operator

bash
kubectl minio delete --namespace minio-operator
kubectl minio delete --namespace minio-operator

2. 水平扩容

水平扩容,一般指通过增加节点数扩展系统性能;推荐

水平扩容分为:对等扩容联邦扩容

2.0 对等扩容

MinIO的极简设计理念使得MinIO分布式集群并不支持向集群中添加单个节点并进行自动调节的扩容方式,这是因为加入单个节点后所引发的数据均衡以及纠删组划分等问题会为整个集群带来复杂的调度和处理过程,并不利于维护。因此,MinIO提供了一种对等扩容的方式,即要求增加的节点数和磁盘数均需与原集群保持对等

优点:

对等扩容的优点在于配置操作简单易行,通过一条命令即可完成扩容(注意:推荐使用连续的节点IP,并参照MinIO官网在扩容命令中使用{})。

缺点:

对等扩容的局限性在于:①扩容需重启;②扩容存在限制,集群节点数一般不超过32个,这是由于MinIO集群通过分布式锁保证强一致性,若集群节点数过大,维护强一致性将带来性能问题。

扩容

水平扩容举例:

例如原集群包含4个节点4块磁盘,则在扩容时必须同样增加4个节点4块磁盘(或为其倍数),以便系统维持相同的数据冗余SLA,从而极大地降低扩容的复杂性。如上例,在扩容后,MinIO集群并不会对全部的8个节点进行完全的数据均衡,而是将原本的4个节点视作一个区域,新加入的4节点视作另一区域,当有新对象上传时,集群将依据各区域的可用空间比例确定存放区域,在各区域内仍旧通过哈希算法确定对应的纠删组进行最终的存放。此外,集群进行一次对等扩容后,还可依据扩容规则继续进行对等扩容,但出于安全性考虑,集群的最大节点数一般不得超过32个

要求扩容的机器和硬盘是原来的倍数。

假设新增4台服务器,每台4块硬盘,每块硬盘1T,给新的服务器的每一个硬盘创建pv,参考部署步骤。

2.1 准备磁盘

bash
mkfs.xfs /dev/sdb -L MINIO-DISK1
mkfs.xfs /dev/sdc -L MINIO-DISK2
mkfs.xfs /dev/sdd -L MINIO-DISK3
mkfs.xfs /dev/sde -L MINIO-DISK4
mkfs.xfs /dev/sdb -L MINIO-DISK1
mkfs.xfs /dev/sdc -L MINIO-DISK2
mkfs.xfs /dev/sdd -L MINIO-DISK3
mkfs.xfs /dev/sde -L MINIO-DISK4

2.2 创建pv

...

2.3 扩容

2.3.1 命令行

kubectl minio tenant expand minio-tenant-1   \
  --servers                 4                \
  --volumes                 16               \
  --capacity                16Ti             \
  --storage-class           minio-local-storage    \
  --namespace               minio-tenant-1
  
 # 查看扩容后的情况
 kubectl minio tenant info minio-tenant-1 \
  --namespace minio-tenant-1
kubectl minio tenant expand minio-tenant-1   \
  --servers                 4                \
  --volumes                 16               \
  --capacity                16Ti             \
  --storage-class           minio-local-storage    \
  --namespace               minio-tenant-1
  
 # 查看扩容后的情况
 kubectl minio tenant info minio-tenant-1 \
  --namespace minio-tenant-1

2.3.2 图形界面

1.点击pools

image-20240717144219852

3. 垂直扩容

垂直扩容则指提升各节点自身的性能,例如增加节点的磁盘存储空间

直接采用垂直扩容方式扩容MinIO集群的节点磁盘空间,会为集群运行带来若干问题,官方也并不推荐

4. 数据恢复

4.1 磁盘损坏

当磁盘损坏时,只需更换新磁盘,minio会自动修复,具体步骤如下:

4.1.1 卸载损坏的磁盘

# 假设损坏的磁盘是/dev/sdb
umount /dev/sdb
# 假设损坏的磁盘是/dev/sdb
umount /dev/sdb
  • 换上新的磁盘,格式化并挂载
bash
# 根据实际情况修改命令
mkfs.xfs /dev/sdb -L MINIO-DISK1

# vim /etc/fstab
LABEL=MINIO-DISK1      /data/minio-data-1     xfs     defaults,noatime  0  0

# 挂载
mount -a
# 根据实际情况修改命令
mkfs.xfs /dev/sdb -L MINIO-DISK1

# vim /etc/fstab
LABEL=MINIO-DISK1      /data/minio-data-1     xfs     defaults,noatime  0  0

# 挂载
mount -a

4.1.2 观察过程

mc admin console
mc admin console

minio会自动发现新的磁盘并修复数据

  • 修复
bash
mc admin heal
mc admin heal

4.2 节点损坏

节点损坏是指整个服务器损坏无法使用,只需给该节点装好系统,将节点加入原k8s集群,然后按照修复磁盘的步骤修复即可

5. 升级

5.1 升级minio

bash
kubectl minio tenant upgrade minio-tenant-1 \
--namespace minio-tenant-1 \
--image minio/minio:RELEASE.2023-04-20T17-56-55Z
kubectl minio tenant upgrade minio-tenant-1 \
--namespace minio-tenant-1 \
--image minio/minio:RELEASE.2023-04-20T17-56-55Z

RELEASE.2023-04-20T17-56-55Z 根据版本进行选择