Kubernetes部署MinIO

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

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

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


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

$ 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。 比如,

$ helm install --name my-release \
  --set persistence.size=100Gi \
    stable/minio
上述命令部署了一个带上100G持久卷的MinIO服务。

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

$ helm install --name my-release -f values.yaml stable/minio
分布式MinIO
默认情况下,此图表以独立模式提供MinIO服务器。 要在分布式模式中配置MinIO服务器,请将mode字段设置为distributed,

$ helm install --set mode=distributed stable/minio
上述命令部署了个带有4个节点的分布式MinIO服务器。 要更改分布式MinIO服务器中的节点数,请设置numberOfNodes属性。

$ 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,

$ helm install --set mode=shared stable/minio
上述命令规定了4个MinIO服务器节点,一个存储。 要更改共享的MinIO部署中的节点数,请设置numberOfNodes字段,

$ helm install --set mode=shared,numberOfNodes=8 stable/minio
上述命令规定了MinIO服务有8个节点,采用shared模式。

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

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

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

$ helm upgrade --set imageTag=<replace-with-minio-docker-image-tag> <helm-release-name> stable/minio
如果更新成功,你可以看到下面的输出信息

Release "your-helm-release" has been upgraded. Happy Helming!
4. 卸载Chart
假设你的版本被命名为my-release,使用下面的命令删除它:

$ helm delete my-release
该命令删除与chart关联的所有Kubernetes组件,并删除该release。

提示
在Kubernetes群集中运行的chart的实例称为release。 安装chart后,Helm会自动分配唯一的release名称。 你也可以通过下面的命令设置你心仪的名称:
$ helm install --name my-release stable/minio
为了覆盖默认的秘钥,可在运行helm install时将access key和secret key做为参数传进去。
$ helm install --set accessKey=myaccesskey,secretKey=mysecretkey \
    stable/minio