使用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
$ 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
了解更多
原文: https://docs.minio.io/cn/deploy-minio-on-kubernetes.html