0%

kubernetes部署minio对象存储

kubernetes通过两种方式部署minio

Helm方式部署

参考:https://github.com/minio/charts

基于官方helm chat进行部署,安装 MINIO chart

1
helm repo add minio https://helm.min.io/

独立模式部署

独立模式部署minio,使用deployment方式部署单个pod:

1
2
3
4
5
6
7
8
9
helm install minio \
--namespace minio --create-namespace \
--set accessKey=minio,secretKey=minio123 \
--set mode=standalone \
--set service.type=NodePort \
--set persistence.enabled=true \
--set persistence.size=10Gi \
--set persistence.storageClass=longhorn \
minio/minio

分布式模式部署

分布式模式部署minio,使用statefulset模式部署多个pod并分布在不同节点:

1
2
3
4
5
6
7
8
9
helm install minio \
--namespace minio --create-namespace \
--set accessKey=minio,secretKey=minio123 \
--set mode=distributed \
--set replicas=4 \
--set service.type=NodePort \
--set persistence.size=10Gi \
--set persistence.storageClass=longhorn \
minio/minio

说明:独立模式下replicas参数不生效,仅对分布式模式生效, 可选值 4 <= x <= 16

清理minio集群

1
helm -n minio uninstall minio

分布式模式下需要手动清理pvc和pv

1
kubectl -n minio delete pvc --all 

Operator方式部署

MinIO Operator为Kubernetes带来了对MinIO,图形控制台和加密的原生支持。

参考:https://github.com/minio/operator

安装minio插件

1
kubectl krew install minio

MinIO Operator提供MinIO租户创建,管理,升级,池添加等功能。Operator可以控制和管理多个MinIO租户。

kubectl minio初始化,创建MinIO Operator

1
kubectl minio init

部署tenant

1
2
3
4
kubectl minio tenant create tenant \
--namespace tenant \
--storage-class longhorn \
--servers 4 --volumes 4 --capacity 40Gi

说明: storage-class如不指定,可默认storage-class

访问配置

修改service类型为NodePort,方便访问minio UI以及tenant-console UI:

1
2
kubectl -n tenant patch svc minio -p '{"spec": {"type": "NodePort"}}'
kubectl -n tenant patch svc tenant-console -p '{"spec": {"type": "NodePort"}}'

minio扩容

1
kubectl minio tenant expand --name tenant --servers 8 --volumes 32 --capacity 32Ti

清理operator

1
kubectl minio tenant delete tenant -n tenant