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