Kubernetes部署Minio集群
默认已安装kubernetes机群
kubernetes1.25 krew0.4.3 minio operator4.5.4
1、krew
# 安装git
yum install -y git
# 下载
wget https://github.com/kubernetes-sigs/krew/releases/download/v0.4.3/krew-linux_amd64.tar.gz
tar -zxvf krew-linux_amd64.tar.gz
echo 'export PATH="${PATH}:${HOME}/.krew/bin"' >> ~/.bashrc
source ~/.bashrc
# 安装
./krew-linux_amd64 install krew
# 验证
kubectl krew list
2、directpv
# 安装directpv插件
kubectl krew install directpv
# 安装directpv的组件
kubectl directpv install
# 查看directpv信息
kubectl directpv info
# 发现并添加用于卷调度的驱动器
kubectl directpv discover
kubectl directpv init drives.yaml --dangerous
# 获取添加的驱动器列表
kubectl directpv list drives
# 查看存储类
kubectl get sc
3、Minio集群
3.1、minio operator
# 下载
wget https://github.com/minio/operator/releases/download/v4.5.4/kubectl-minio_4.5.4_linux_amd64 -o kubectl-minio
# 添加执行权限
chmod +x kubectl-minio
# 移动到 /usr/local/bin/
cp kubectl-minio /usr/local/bin/
# 验证
kubectl minio version
# 初始化minio operator
kubectl minio init
# 访问图形界面(本文不涉及)
kubectl minio proxy -n minio-operator
3.2、minio tenant(命令行方式)
参数 | 含义 |
---|---|
–disable-tls | 关闭tls |
enable-audit-logs | 是否启用审计,默认开启 |
servers | 服务器总数 |
volumes | 硬盘总数 |
capacity | 容量总数 |
storage-class | 存储类,directpv-min-io |
namespace | 租户命名空间 |
# 给租户创建单独的namespace
kubectl create namespace xumeng03# 创建租户(会打印出用户名密码,指挥显示一次,注意保存)
kubectl minio tenant create xumeng03 \--servers 4 \--volumes 4 \--capacity 32Gi \--storage-class directpv-min-io \--namespace xumeng03
admin
fa405ac1-xxxx-xxxx-ad91-239095dda9a7
3.4、配置外部访问
ingress配置外部访问控制台
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-minio-consolenamespace: xumeng03annotations:kubernetes.io/ingress.class: "nginx"# 一定要指定nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:# 转发规则rules:- host: console.ialso.cnhttp:paths:- path: /pathType: Prefixbackend:service:name: xumeng03-consoleport:number: 9443
ingress配置外部访问minio服务
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-minionamespace: xumeng03annotations:kubernetes.io/ingress.class: "nginx"# 一定要指定nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"# 此处的值应当指定为:minio.nameSpace.svc.cluster.local,否则访问图片会遇到签名错误,但是指定后mc会访问不了,暂时没有什么合适的解决方案nginx.ingress.kubernetes.io/upstream-vhost: minio.xumeng03.svc.cluster.local
spec:# 转发规则rules:- host: minio.ialso.cnhttp:paths:- path: /pathType: Prefixbackend:service:name: xumeng03-hlport:number: 9000
3.5、客户端mc
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin
# 添加 minio 服务端配置
mc config host add minio https://minio.ialso.cn admin fa405ac1-64e2-4209-ad91-239095dda9a7 --api s3v4
# 查看 minio bucket
mc ls minio
# 创建 bucket
mc mb minio/test1
# 上传本地目录(文件不加r)
mc cp -r mysql_data minio/test/
# 下载远程目录(文件不加r)
mc cp -r minio/test .
# 删除目录
mc rm minio/test/mysql_data --recursive --force
# 删除文件
mc rm minio/test/xxx.yaml
# 删除 7 天前的对象
mc rm --force --older-than=7 minio/backup