使用Kubernetes部署Minio

Kubernetes的部署和状态集提供了在独立,分布式或共享模式下部署Minio服务器的完美平台。 在Kubernetes上部署Minio有多种选择,您可以选择最适合您的。

  • Minio Helm Chart通过一个简单的命令即可提供自定义而且简单的Minio部署。更多关于Minio Helm部署的资料,请访问这里.

  • 你也可以浏览Kubernetes Minio示例 ,通过.yaml文件来部署Minio。

  • 如果您想在Kubernetes上开始使用Minio,而无需创建真正的容器集群,您也可以使用Minikube deploy Minio locally

1. 前提条件

  • 默认standaline模式下,需要开启Beta API的Kubernetes 1.4+。
  • distributed 模式,需要开启Beta API的Kubernetes 1.5+。
  • 底层支持PV provisioner。
  • 你的K8s集群里需要有Helm package manager installed

    2. 使用Helm Chart部署Minio

安装 Minio chart

  1. $ helm install stable/minio

以上命令以默认配置在Kubernetes群集上部署Minio。 以下部分列出了Minio图表的所有可配置参数及其默认值。

配置

参数 描述 默认值
image Minio镜像名称 minio/minio
imageTag Minio镜像tag. 可选值在 这里. RELEASE.2017-08-05T00-00-53Z
imagePullPolicy Image pull policy Always
mode Minio server模式 (standalone, shared 或者 distributed) standalone
numberOfNodes 节点数 (仅对分布式模式生效). 可选值 4 <= x <= 16 4
accessKey 默认access key AKIAIOSFODNN7EXAMPLE
secretKey 默认secret key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
configPath 默认配置文件路径 ~/.minio
mountPath 默认挂载路径 /export
serviceType Kubernetes service type LoadBalancer
servicePort Kubernetes端口 9000
persistence.enabled 是否使用持久卷存储数据 true
persistence.size 持久卷大小 10Gi
persistence.storageClass 持久卷类型 generic
persistence.accessMode ReadWriteOnce 或者 ReadOnly ReadWriteOnce
resources CPU/Memory 资源需求/限制 Memory: 256Mi, CPU: 100m

你可以通过—set key=value[,key=value]helm install。 比如,

  1. $ helm install --name my-release \
  2. --set persistence.size=100Gi \
  3. stable/minio

上述命令部署了一个带上100G持久卷的Minio服务。

或者,您可以提供一个YAML文件,用于在安装chart时指定参数值。 例如,

  1. $ helm install --name my-release -f values.yaml stable/minio

分布式Minio

默认情况下,此图表以独立模式提供Minio服务器。 要在分布式模式中配置Minio服务器,请将mode字段设置为distributed,

  1. $ helm install --set mode=distributed stable/minio

上述命令部署了个带有4个节点的分布式Minio服务器。 要更改分布式Minio服务器中的节点数,请设置numberOfNodes属性。

  1. $ helm install --set mode=distributed,numberOfNodes=8 stable/minio

上述命令部署了个带有8个节点的分布式Minio服务器。注意一下,numberOfNodes取值范围是[4,16]。

StatefulSet 限制,适用于分布式Minio

  • StatefulSets需要持久化存储,所以如果 mode设成 distributed的话,persistence.enabled参数不生效。
  • 卸载分布式Minio版本时,需要手动删除与StatefulSet关联的卷。

    Shared Minio

如需采用shared mode部署Minio, 将mode 设为shared,

  1. $ helm install --set mode=shared stable/minio

上述命令规定了4个Minio服务器节点,一个存储。 要更改共享的Minio部署中的节点数,请设置numberOfNodes字段,

  1. $ helm install --set mode=shared,numberOfNodes=8 stable/minio

上述命令规定了Minio服务有8个节点,采用shared模式。

持久化

这里规定了PersistentVolumeClaim并将相应的持久卷挂载到默认位置/export。 您需要Kubernetes集群中的物理存储才能使其工作。 如果您宁愿使用emptyDir,请通过以下方式禁用PersistentVolumeClaim:

  1. $ helm install --set persistence.enabled=false stable/minio
"当Pod分配给节点时,首先创建一个emptyDir卷,只要该节点上的Pod正在运行,它就会存在。 当某个Pod由于任何原因从节点中删除时,emptyDir中的数据将永久删除。"

3. 使用Helm更新Minio版本

您可以更新现有的Minio Helm Release以使用较新的Minio Docker镜像。 为此,请使用helm upgrade命令:

  1. $ helm upgrade --set imageTag=<replace-with-minio-docker-image-tag> <helm-release-name> stable/minio

如果更新成功,你可以看到下面的输出信息

  1. Release "your-helm-release" has been upgraded. Happy Helming!

4. 卸载Chart

假设你的版本被命名为my-release,使用下面的命令删除它:

  1. $ helm delete my-release

该命令删除与chart关联的所有Kubernetes组件,并删除该release。

提示

  • 在Kubernetes群集中运行的chart的实例称为release。 安装chart后,Helm会自动分配唯一的release名称。 你也可以通过下面的命令设置你心仪的名称:

    1. $ helm install --name my-release stable/minio
  • 为了覆盖默认的秘钥,可在运行helm install时将access key和secret key做为参数传进去。

    1. $ helm install --set accessKey=myaccesskey,secretKey=mysecretkey \
    2. stable/minio

了解更多

原文: https://docs.minio.io/cn/deploy-minio-on-kubernetes.html