k8s部署minio分布式集群

1 篇文章 0 订阅

k8s部署minio分布式集群

  • 工作时项目有需求,需要在k8s中部署minio分布式集群,以前只部署过单机,minio的集群也没在容器中部署过,于是开始研究如何在k8s中部署minio分布式集群
  • 网上查资料的时候,发现信息参差不齐,大部分都是单机部署,还有些误人子弟的假集群,要不就不是在k8s中部署的
  • 我一开始是按以前部署minio集群的经验(非容器),来手写yaml部署minio集群,结果还是经验太浅,集群启动后,日志中一直报错,无法与其他minio集群通信,后来才知道需要使用headless服务来进行pod之间的通信,这个是后话
  • 这里我来讲最为轻松简单的k8s中minio真分布式集群的部署方式

使用helm部署minio分布式集群

  • Helm(又称Helm Charts或Helm Package Manager)是一个用于Kubernetes应用程序的包管理工具。它允许开发者、运维人员和DevOps团队轻松地创建、分享和部署Kubernetes应用程序的预定义软件包和配置。
  • 反正就是方便进行k8s部署,省去大量编写yaml的过程,比较方便的工具

helm安装

  • 下载地址
https://github.com/helm/helm/releases
  • 根据服务器下载需要的版本,这里我是amd64的版本,下载下来后解压缩,把helm复制到/usr/bin中
  • 然后命令行测试helm version
version.BuildInfo{Version:"v3.12.3", GitCommit:"3a31588ad33fe3b89af5a2a54ee1d25bfe6eaa5e", GitTreeState:"clean", GoVersion:"go1.20.7"}
  • 这样helm就安装完毕了
  • 我这里选择的源是
https://charts.bitnami.com/bitnami
  • 命令行输入helm repo add my-repo https://charts.bitnami.com/bitnami
  • 执行完后输入helm repo list
  • 可以看到刚才添加的repo源
  • 正常我们部署minio都需要持久化部署,这样不会丢失文件,提前设置好pv与pvc,并进行绑定,然后把values.yaml文件下载下来,helm fetch my-repo/minio --untar这里面包含我们需要的values.yaml,进去修改参数,然后执行即可,参数含义地址https://github.com/bitnami/charts/tree/main/bitnami/minio#installing-the-chart
  • 打开value.yaml 修改参数
  • 账号密码修改
auth:
  ## @param auth.rootUser MinIO® root username
  ##
  rootUser: minioadmin
  ## @param auth.rootPassword Password for MinIO® root user
  ##
  rootPassword: "minioadmin"
  • mode: distributed 修改为distributed,意思是分布式启动
  • replicaCount: 4 启动4个pod,一般建议4的倍数启动,这样会启动minio纠错模式
  • 服务端口与页面端口,这个看自己配
containerPorts:
  api: 9000
  console: 9001
  • 这里配置启动,helm会自动配置生成pvc进行绑定,绑的本地文件夹
persistence:
  ## @param persistence.enabled Enable MinIO® data persistence using PVC. If false, use emptyDir
  ##
  enabled: true
  ....

  • 配置权限
volumePermissions:
  ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`
  ##
  enabled: true #这里配置为true

启动minio分布式集群

  • 这里 -n是指定命名空间,看个人需求
helm install minio my-repo/minio -n wzh -f /home/k8s/helm/minio/values.yaml
  • 等待启动完毕
    在这里插入图片描述

  • 日志也可以看出启动完毕了
    在这里插入图片描述

  • 然后自己再写个nodePort的service去访问页面

apiVersion: v1
kind: Service
metadata:
  name: minio-nodeport0
  namespace: wzh
spec:
  selector:
    statefulset.kubernetes.io/pod-name: minio-0 
  ports:
    - protocol: TCP
      port: 9001
      targetPort: 9001
      name: minio-console
    - protocol: TCP
      port: 9000
      targetPort: 9000     
      name: minio-server
  type: NodePort
  • 然后查到对外暴露的端口访问即可
    在这里插入图片描述

  • 可以看到这是真的minio分布式集群,4个服务与4块硬盘都在线,这样就部署好了

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lgbisha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值