• 使用Kubernetes部署Minio
    • 1. 前提条件
    • 2. 使用Helm Chart部署Minio
      • 配置
      • 分布式Minio
        • StatefulSet 限制,适用于分布式Minio
      • Shared Minio
      • 持久化
    • 3. 使用Helm更新Minio版本
    • 4. 卸载Chart
      • 提示
      • 了解更多

    使用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

    了解更多

    • Minio纠删码快速入门
    • Kubernetes文档
    • Helm package manager for kubernetes

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