storj.io/minio@v0.0.0-20230509071714-0cbc90f649b1/docs/zh_CN/orchestration/kubernetes/README.md (about) 1 # 使用Kubernetes部署MinIO [](https://slack.min.io) [](https://hub.docker.com/r/minio/minio/) 2 3 Kubernetes的部署和状态集提供了在独立,分布式或共享模式下部署MinIO服务器的完美平台。 在Kubernetes上部署MinIO有多种选择,您可以选择最适合您的。 4 5 - MinIO [Helm](https://helm.sh) Chart通过一个简单的命令即可提供自定义而且简单的MinIO部署。更多关于MinIO Helm部署的资料,请访问[这里](#prerequisites). 6 7 - 你也可以浏览Kubernetes [MinIO示例](https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes/README.md) ,通过`.yaml`文件来部署MinIO。 8 9 <a name="prerequisites"></a> 10 ## 1. 前提条件 11 12 * 默认standalone模式下,需要开启Beta API的Kubernetes 1.4+。 13 * [distributed 模式](#distributed-minio),需要开启Beta API的Kubernetes 1.5+。 14 * 底层支持PV provisioner。 15 * 你的K8s集群里需要有Helm package manager [installed](https://github.com/kubernetes/helm#install)。 16 17 ## 2. 使用Helm Chart部署MinIO 18 19 安装 MinIO chart 20 21 ```bash 22 $ helm install stable/minio 23 ``` 24 以上命令以默认配置在Kubernetes群集上部署MinIO。 以下部分列出了MinIO图表的所有可配置参数及其默认值。 25 26 ### 配置 27 28 | 参数 | 描述 | 默认值 | 29 |----------------------------|-------------------------------------|---------------------------------------------------------| 30 | `image` | MinIO镜像名称 | `minio/minio` | 31 | `imageTag` | MinIO镜像tag. 可选值在 [这里](https://hub.docker.com/r/minio/minio/tags/).| `RELEASE.2017-08-05T00-00-53Z`| 32 | `imagePullPolicy` | Image pull policy | `Always` | 33 | `mode` | MinIO server模式 (`standalone`, `shared` 或者 `distributed`)| `standalone` | 34 | `numberOfNodes` | 节点数 (仅对分布式模式生效). 可选值 4 <= x <= 16 | `4` | 35 | `accessKey` | 默认access key | `AKIAIOSFODNN7EXAMPLE` | 36 | `secretKey` | 默认secret key | `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` | 37 | `configPath` | 默认配置文件路径 | `~/.minio` | 38 | `mountPath` | 默认挂载路径| `/export` | 39 | `serviceType` | Kubernetes service type | `LoadBalancer` | 40 | `servicePort` | Kubernetes端口 | `9000` | 41 | `persistence.enabled` | 是否使用持久卷存储数据 | `true` | 42 | `persistence.size` | 持久卷大小 | `10Gi` | 43 | `persistence.storageClass` | 持久卷类型 | `generic` | 44 | `persistence.accessMode` | ReadWriteOnce 或者 ReadOnly | `ReadWriteOnce` | 45 | `resources` | CPU/Memory 资源需求/限制 | Memory: `256Mi`, CPU: `100m` | 46 47 你可以通过`--set key=value[,key=value]`给`helm install`。 比如, 48 49 ```bash 50 $ helm install --name my-release \ 51 --set persistence.size=100Gi \ 52 stable/minio 53 ``` 54 55 上述命令部署了一个带上100G持久卷的MinIO服务。 56 57 或者,您可以提供一个YAML文件,用于在安装chart时指定参数值。 例如, 58 59 ```bash 60 $ helm install --name my-release -f values.yaml stable/minio 61 ``` 62 63 ### 分布式MinIO 64 65 默认情况下,此图表以独立模式提供MinIO服务器。 要在[分布式模式](https://docs.min.io/cn/distributed-minio-quickstart-guide)中配置MinIO服务器,请将`mode`字段设置为`distributed`, 66 67 ```bash 68 $ helm install --set mode=distributed stable/minio 69 ``` 70 71 上述命令部署了个带有4个节点的分布式MinIO服务器。 要更改分布式MinIO服务器中的节点数,请设置`numberOfNodes`属性。 72 73 74 ```bash 75 $ helm install --set mode=distributed,numberOfNodes=8 stable/minio 76 ``` 77 78 上述命令部署了个带有8个节点的分布式MinIO服务器。注意一下,`numberOfNodes`取值范围是[4,16]。 79 80 #### StatefulSet [限制](http://kubernetes.io/docs/concepts/abstractions/controllers/statefulsets/#limitations),适用于分布式MinIO 81 82 * StatefulSets需要持久化存储,所以如果 `mode`设成 `distributed`的话,`persistence.enabled`参数不生效。 83 * 卸载分布式MinIO版本时,需要手动删除与StatefulSet关联的卷。 84 85 ### Shared MinIO 86 87 如需采用[shared mode](https://github.com/minio/minio/blob/master/docs/shared-backend/README.md)部署MinIO, 将`mode` 设为`shared`, 88 89 ```bash 90 $ helm install --set mode=shared stable/minio 91 ``` 92 93 上述命令规定了4个MinIO服务器节点,一个存储。 要更改共享的MinIO部署中的节点数,请设置`numberOfNodes`字段, 94 95 ```bash 96 $ helm install --set mode=shared,numberOfNodes=8 stable/minio 97 ``` 98 99 上述命令规定了MinIO服务有8个节点,采用shared模式。 100 101 ### 持久化 102 103 这里规定了PersistentVolumeClaim并将相应的持久卷挂载到默认位置`/export`。 您需要Kubernetes集群中的物理存储才能使其工作。 如果您宁愿使用`emptyDir`,请通过以下方式禁用PersistentVolumeClaim: 104 105 ```bash 106 $ helm install --set persistence.enabled=false stable/minio 107 ``` 108 109 > *"当Pod分配给节点时,首先创建一个emptyDir卷,只要该节点上的Pod正在运行,它就会存在。 当某个Pod由于任何原因从节点中删除时,emptyDir中的数据将永久删除。"* 110 111 ## 3. 使用Helm更新MinIO版本 112 113 您可以更新现有的MinIO Helm Release以使用较新的MinIO Docker镜像。 为此,请使用`helm upgrade`命令: 114 115 ```bash 116 $ helm upgrade --set imageTag=<replace-with-minio-docker-image-tag> <helm-release-name> stable/minio 117 ``` 118 119 如果更新成功,你可以看到下面的输出信息 120 121 ```bash 122 Release "your-helm-release" has been upgraded. Happy Helming! 123 ``` 124 125 ## 4. 卸载Chart 126 127 假设你的版本被命名为`my-release`,使用下面的命令删除它: 128 129 ```bash 130 $ helm delete my-release 131 ``` 132 133 该命令删除与chart关联的所有Kubernetes组件,并删除该release。 134 135 ### 提示 136 137 * 在Kubernetes群集中运行的chart的实例称为release。 安装chart后,Helm会自动分配唯一的release名称。 你也可以通过下面的命令设置你心仪的名称: 138 139 ```bash 140 $ helm install --name my-release stable/minio 141 ``` 142 143 * 为了覆盖默认的秘钥,可在运行helm install时将access key和secret key做为参数传进去。 144 145 ```bash 146 $ helm install --set accessKey=myaccesskey,secretKey=mysecretkey \ 147 stable/minio 148 ``` 149 150 ### 了解更多 151 152 - [MinIO纠删码快速入门](https://docs.min.io/cn/minio-erasure-code-quickstart-guide) 153 - [Kubernetes文档](https://kubernetes.io/docs/home/) 154 - [Helm package manager for kubernetes](https://helm.sh/)