mirror of
https://github.com/minio/minio.git
synced 2025-11-10 05:59:43 -05:00
Add chinese translation docs. (#5224)
This commit is contained in:
committed by
Dee Koder
parent
8b4d7048f8
commit
135a6a7bb4
24
docs/zh_CN/orchestration/README.md
Normal file
24
docs/zh_CN/orchestration/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Minio部署快速入门 [](https://slack.minio.io) [](https://goreportcard.com/report/minio/minio) [](https://hub.docker.com/r/minio/minio/) [](https://codecov.io/gh/minio/minio)
|
||||
|
||||
Minio是一个[云原生](https://baike.baidu.com/item/Cloud%20Native/19865304?fr=aladdin)的应用程序,旨在在多租户环境中以可持续的方式进行扩展。Orchestration平台为Minio的扩展提供了非常好的支撑。以下是各种orchestration平台的Minio部署文档
|
||||
Minio is a cloud-native application designed to scale in a sustainable manner in multi-tenant environments. Orchestration platforms provide perfect launchpad for Minio to scale. Below is the list of Minio deployment documents for various orchestration platforms:
|
||||
|
||||
| Orchestration平台|
|
||||
|:---|
|
||||
| [`Docker Swarm`](http://docs.minio.io/docs/zh_CN/deploy-minio-on-docker-swarm) |
|
||||
| [`Docker Compose`](http://docs.minio.io/docs/zh_CN/deploy-minio-on-docker-compose) |
|
||||
| [`Kubernetes`](http://docs.minio.io/docs/zh_CN/deploy-minio-on-kubernetes) |
|
||||
| [`DC/OS`](http://docs.minio.io/docs/zh_CN/deploy-minio-on-dc-os) |
|
||||
|
||||
## 为什么说Minio是云原生的(cloud-native)?
|
||||
云原生这个词代表的是一些思想的集合,比如微服务部署,可伸缩,而不是说把一个单体应用改造成容器部署。一个云原生的应用在设计时就考虑了移植性和可伸缩性,而且可以通过简单的复制即可实现水平扩展。现在兴起的编排平台,想Swarm,Kubernetes,以及DC/OS,让大规模集群的复制和管理变得前所未有的简单,哪里不会点哪里。
|
||||
|
||||
容器提供了隔离的应用执行环境,编排(orchestration)平台通过容器管理以及复制功能提供了无缝的扩展。Minio继承了这些,针对每个租户提供了存储环境的隔离。
|
||||
|
||||
Minio是建立在云原生的基础上,有纠删码、分布式和共享存储这些特性。Minio专注于并且只专注于存储,而且做的还不错。它可以通过编排平台复制一个Minio实例就实现了水平扩展。
|
||||
|
||||
> 在一个云原生环境中,伸缩性不是应用的一个功能而是编排平台的功能。
|
||||
|
||||
现在的应用、数据库,key-store这些,很多都已经部署在容器中,并且通过编排平台进行管理。Minio提供了一个健壮的、可伸缩、AWS S3兼容的对象存储,这是Minio的立身之本,凭此在云原生应用中占据一席之地。
|
||||
|
||||

|
||||
43
docs/zh_CN/orchestration/dcos/README.md
Normal file
43
docs/zh_CN/orchestration/dcos/README.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# 在 DC/OS上部署minio [](https://slack.minio.io) [](https://goreportcard.com/report/minio/minio) [](https://hub.docker.com/r/minio/minio/) [](https://codecov.io/gh/minio/minio)
|
||||
|
||||
要在DC/OS上部署Minio,可以使用我们的 [official universe package](https://github.com/mesosphere/universe/tree/version-3.x/repo/packages/M/minio/6).
|
||||
|
||||
## 1. 前提条件
|
||||
|
||||
- DC/OS 1.9或更新版本
|
||||
- [Marathon-LB](https://dcos.io/docs/1.9/usage/service-discovery/marathon-lb/usage/) 必须安装并启动。
|
||||
- 识别Marathon-LB或者一个指向Marathon-LB的public agent(s)的可用主机名的 [IP of the public agent](https://dcos.io/docs/1.9/administration/locate-public-agent/) 。
|
||||
|
||||
|
||||
## 2. 设置Minio
|
||||
|
||||
你可以使用DC/OS GUI或者CLI安装Minio Universe package。
|
||||
|
||||
### 使用DC/OS GUI安装Minio
|
||||
- 访问DC/OS admin页面,然后点击左边栏的Universe,然后点击Packages页签,搜索Minio,点击左边栏的```Install```按钮。
|
||||
|
||||
- 点击按钮`Install Package`进行一键安装。你可以通过`host:9000`访问你的Minio server,其中`host`是Marathon-LB所在服务器的IP或者主机名。 `minio` 和 `minio123` 分别是默认的access key和secret key。
|
||||
|
||||
- 更多关于自定义安装的内容,请看[这里](https://github.com/dcos/zh_CN/examples/blob/master/minio/1.9/README.md#minio-installation-using-gui).
|
||||
|
||||
### 使用DC/OS CLI安装Minio
|
||||
|
||||
使用命令行安装, 输入
|
||||
|
||||
```bash
|
||||
$ dcos package install minio
|
||||
```
|
||||
|
||||
## 3. 卸载Minio
|
||||
|
||||
你确定要这么做吗,如果你真要这么做,我们也不会像国内的软件那么无赖。如需卸载,请输入
|
||||
|
||||
```bash
|
||||
$ dcos package uninstall minio
|
||||
```
|
||||
|
||||
### 了解更多
|
||||
|
||||
- [Minio Erasure Code QuickStart Guide](https://docs.minio.io/docs/zh_CN/minio-erasure-code-quickstart-guide)
|
||||
- [DC/OS Project](https://docs.mesosphere.com/)
|
||||
|
||||
49
docs/zh_CN/orchestration/docker-compose/README.md
Normal file
49
docs/zh_CN/orchestration/docker-compose/README.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# 使用Docker Compose部署Minio [](https://slack.minio.io) [](https://goreportcard.com/report/minio/minio) [](https://hub.docker.com/r/minio/minio/) [](https://codecov.io/gh/minio/minio)
|
||||
|
||||
Docker Compose允许定义和运行单主机,多容器Docker应用程序。
|
||||
|
||||
使用Compose,您可以使用Compose文件来配置Minio服务。 然后,使用单个命令,您可以通过你的配置创建并启动所有分布式Minio实例。 分布式Minio实例将部署在同一主机上的多个容器中。 这是建立基于分布式Minio的开发,测试和分期环境的好方法。
|
||||
|
||||
## 1. 前提条件
|
||||
|
||||
* 熟悉 [Docker Compose](https://docs.docker.com/compose/overview/).
|
||||
* Docker已经在本机安装,从[这里](https://www.docker.com/community-edition#/download)下载相关的安装器。
|
||||
|
||||
## 2. 在Docker Compose上运行分布式Minio
|
||||
|
||||
在Docker Compose上部署分布式Minio,请下载[docker-compose.yaml](https://github.com/minio/minio/blob/master/docs/orchestration/docker-compose/docker-compose.yaml?raw=true)到你的当前工作目录。Docker Compose会pull Minio Docker Image,所以你不需要手动去下载Minio binary。然后运行下面的命令
|
||||
|
||||
### GNU/Linux and macOS
|
||||
|
||||
```sh
|
||||
docker-compose pull
|
||||
docker-compose up
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
```sh
|
||||
docker-compose.exe pull
|
||||
docker-compose.exe up
|
||||
```
|
||||
|
||||
现在每个实例都可以访问,端口从9001到9004,请在浏览器中访问http://127.0.0.1:9001/
|
||||
|
||||
### 注意事项
|
||||
|
||||
* 默认情况下Docker Compose file使用的是最新版的Minio server的Docker镜像,你可以修改image tag来拉取指定版本的[Minio Docker image](https://hub.docker.com/r/minio/minio/).
|
||||
|
||||
* 默认情况下会创建4个minio实例,你可以添加更多的Minio服务(最多总共16个)到你的Minio Comose deployment。添加一个服务
|
||||
* 复制服务定义并适当地更改新服务的名称。
|
||||
* 更新每个服务中的命令部分。
|
||||
* 更新要为新服务公开的端口号。 另外,请确保分配给新服务的端口尚未使用。
|
||||
|
||||
关于分布式Minio的更多资料,请访问[这里](https://docs.minio.io/docs/zh_CN/distributed-minio-quickstart-guide).
|
||||
|
||||
* Docker compose file中的Minio服务使用的端口是9001到9004,这允许多个服务在主机上运行。
|
||||
|
||||
### 了解更多
|
||||
- [Docker Compose概述](https://docs.docker.com/compose/overview/)
|
||||
- [Minio Docker快速入门](https://docs.minio.io/docs/zh_CN/minio-docker-quickstart-guide)
|
||||
- [使用Docker Swarm部署Minio](https://docs.minio.io/docs/zh_CN/deploy-minio-on-docker-swarm)
|
||||
- [Minio纠删码快速入门](https://docs.minio.io/docs/zh_CN/minio-erasure-code-quickstart-guide)
|
||||
86
docs/zh_CN/orchestration/docker-swarm/README.md
Normal file
86
docs/zh_CN/orchestration/docker-swarm/README.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# 使用Docker Swarm部署Minio [](https://slack.minio.io) [](https://goreportcard.com/report/minio/minio) [](https://hub.docker.com/r/minio/minio/) [](https://codecov.io/gh/minio/minio)
|
||||
|
||||
Docker Engine在Swarm模式下提供集群管理和编排功能。 Minio服务器可以在Swarm的分布式模式下轻松部署,创建一个多租户,高可用性和可扩展的对象存储。
|
||||
|
||||
从[Docker Engine v1.13.0](https://blog.docker.com/2017/01/whats-new-in-docker-1-13/) (Docker Compose v3.0)开始, Docker Swarm和Compose 二者[cross-compatible](https://docs.docker.com/compose/compose-file/#version-3)。这允许将Compose file用作在Swarm上部署服务的模板。 我们使用Docker Compose file创建分布式Minio设置。
|
||||
|
||||
## 1. 前提条件
|
||||
|
||||
* 熟悉[Swarm mode key concepts](https://docs.docker.com/engine/swarm/key-concepts/).
|
||||
* Docker engine v1.13.0运行在[networked host machines]集群上(https://docs.docker.com/engine/swarm/swarm-tutorial/#/three-networked-host-machines).
|
||||
|
||||
## 2. 创建Swarm
|
||||
在管理节点上创建一个swarm,请运行下面的命令
|
||||
|
||||
```shell
|
||||
docker swarm init --advertise-addr <MANAGER-IP>
|
||||
```
|
||||
一旦swarm初使化了,你可以看到下面的响应信息
|
||||
|
||||
```shell
|
||||
docker swarm join \
|
||||
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
|
||||
192.168.99.100:2377
|
||||
```
|
||||
|
||||
你现在可以运行上述命令[添加worker节点](https://docs.docker.com/engine/swarm/swarm-tutorial/add-nodes/)到swarm。更多关于创建swarm的细节步骤,请访问[Docker documentation site](https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/).
|
||||
|
||||
## 3. 为Minio创建Docker secret
|
||||
|
||||
```shell
|
||||
echo "AKIAIOSFODNN7EXAMPLE" | docker secret create access_key -
|
||||
echo "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" | docker secret create secret_key -
|
||||
```
|
||||
|
||||
## 4. 部署分布式minio服务
|
||||
|
||||
在你的Swarm master上下载[Docker Compose file](https://github.com/minio/minio/blob/master/docs/orchestration/docker-swarm/docker-compose-secrets.yaml?raw=true) ,然后运行下面的命令
|
||||
|
||||
```shell
|
||||
docker stack deploy --compose-file=docker-compose-secrets.yaml minio_stack
|
||||
```
|
||||
|
||||
这将把Compose file里描述的服务部署为Docker stack`minio_stack`。 更多 `docker stack` [命令参考](https://docs.docker.com/engine/reference/commandline/stack/)。
|
||||
|
||||
在stack成功部署之后,你可以通过[Minio Client](https://docs.minio.io/docs/zh_CN/minio-client-complete-guide) `mc` 或者浏览器访问http://[Node_Public_IP_Address]:[Expose_Port_on_Host]来访问你的Minio server。
|
||||
|
||||
## 4. 删除分布式Minio services
|
||||
|
||||
删除分布式Minio services以及相关的网络,请运行下面的命令
|
||||
|
||||
```shell
|
||||
docker stack rm minio_stack
|
||||
```
|
||||
Swarm不会自动删除为Minio服务创建的host volumes,如果下次新的Minio服务不熟到swarm上,可能会导致损坏。因此,我们建议手动删除所有Minio使用的volumes。为此,到每一个swarm的节点上,列出所有的volumes
|
||||
|
||||
```shell
|
||||
docker volume ls
|
||||
```
|
||||
然后删除`minio_stack` volumes
|
||||
|
||||
```shell
|
||||
docker volume rm volume_name
|
||||
```
|
||||
|
||||
### 注意事项
|
||||
|
||||
* 默认情况下Docker Compose file使用的是最新版的Minio server的Docker镜像,你可以修改image tag来拉取指定版本的[Minio Docker image](https://hub.docker.com/r/minio/minio/).
|
||||
|
||||
* 默认情况下会创建4个minio实例,你可以添加更多的Minio服务(最多总共16个)到你的Minio Comose deployment。添加一个服务
|
||||
* 复制服务定义并适当地更改新服务的名称。
|
||||
* 更新每个服务中的命令部分。
|
||||
* 更新要为新服务公开的端口号。 另外,请确保分配给新服务的端口尚未使用。
|
||||
|
||||
关于分布式Minio的更多资料,请访问[这里](https://docs.minio.io/docs/zh_CN/distributed-minio-quickstart-guide).
|
||||
|
||||
* 默认情况下,Minio服务使用的是`local` volume driver. 更多配置选项,请访问[Docker documentation](https://docs.docker.com/compose/compose-file/#/volume-configuration-reference) 。
|
||||
|
||||
* Docker compose file中的Minio服务使用的端口是9001到9004,这允许多个服务在主机上运行。更多配置选项,请访问[Docker documentation](https://docs.docker.com/compose/compose-file/#/ports).
|
||||
|
||||
* Docker Swarm默认使用的是ingress做负载均衡,你可以跟据需要配置[external load balancer based](https://docs.docker.com/engine/swarm/ingress/#/configure-an-external-load-balancer)。
|
||||
|
||||
### 了解更多
|
||||
- [Docker Swarm mode概述](https://docs.docker.com/engine/swarm/)
|
||||
- [Minio Docker快速入门](https://docs.minio.io/docs/zh_CN/minio-docker-quickstart-guide)
|
||||
- [使用Docker Compose部署Minio](https://docs.minio.io/docs/zh_CN/deploy-minio-on-docker-compose)
|
||||
- [Minio纠删码快速入门](https://docs.minio.io/docs/zh_CN/minio-erasure-code-quickstart-guide)
|
||||
543
docs/zh_CN/orchestration/kubernetes-yaml/README.md
Normal file
543
docs/zh_CN/orchestration/kubernetes-yaml/README.md
Normal file
@@ -0,0 +1,543 @@
|
||||
# 使用Kubernetes做Minio的云原生部署 [](https://slack.minio.io) [](https://goreportcard.com/report/minio/minio) [](https://hub.docker.com/r/minio/minio/) [](https://codecov.io/gh/minio/minio)
|
||||
|
||||
## 目录
|
||||
- [前提条件](#前提条件)
|
||||
- [Minio独立模式部署](#Minio-Standalone模式部署)
|
||||
- [Minio独立模式快速入门](#Minio独立模式快速入门)
|
||||
- [创建持久卷声明](#Minio独立模式快速入门)
|
||||
- [创建Minio的部署](#创建Minio的部署)
|
||||
- [创建Miniio服务](#创建Miniio服务)
|
||||
- [更新已有的Minio部署](#更新已有的Minio部署)
|
||||
- [独立模式资源清理](#独立模式资源清理)
|
||||
|
||||
- [Minio分布式服务部署](#Minio分布式服务部署)
|
||||
- [分布式快速入门](#分布式快速入门)
|
||||
- [创建Minio Headless服务](#创建Minio-Headless服务)
|
||||
- [创建Minio Statefulset](#创建Minio-Statefulset)
|
||||
- [创建负载均衡服务](#创建负载均衡服务)
|
||||
- [更新已存在的Minio StatefulSet](#更新已存在的Minio-StatefulSet)
|
||||
- [分布式模式资源清理](#分布式模式资源清理)
|
||||
|
||||
- [Minio GCS 网关部署](#Minio-GCS网关部署)
|
||||
- [GCS 网关快速入门](#GCS-网关快速入门)
|
||||
- [创建GCS凭据](#创建GCS凭据)
|
||||
- [创建Minio GCS Gateway部署](#创建Minio-GCS-Gateway部署)
|
||||
- [创建Minio LoadBalancer服务](#创建Minio-LoadBalancer服务)
|
||||
- [更新现有的Minio GCS部署](#更新现有的Minio-GCS部署)
|
||||
- [GCS网关资源清理](#GCS网关资源清理)
|
||||
|
||||
## 前提条件
|
||||
|
||||
运行该示例,你需要安装并运行Kubernetes版本>=1.4的集群,而且已经安装 [`kubectl`](https://kubernetes.io/docs/tasks/kubectl/install/) 命令行工具。请访问
|
||||
[getting started guides](https://kubernetes.io/docs/getting-started-guides/)获取响应平台的安装指导。
|
||||
## Minio Standalone模式部署
|
||||
|
||||
以下部分描述了如何在Kubernetes上部署一个独立的 [Minio](https://minio.io/) 服务。部署使用的是Docker Hub上的 [官方Minio Docker image](https://hub.docker.com/r/minio/minio/~/dockerfile/) 。
|
||||
|
||||
此部分使用了以下Kubernetes的核心组件:
|
||||
|
||||
- [_Pods_](https://kubernetes.io/docs/user-guide/pods/)
|
||||
- [_Services_](https://kubernetes.io/docs/user-guide/services/)
|
||||
- [_Deployments_](https://kubernetes.io/docs/user-guide/deployments/)
|
||||
- [_Persistent Volume Claims_](https://kubernetes.io/docs/user-guide/persistent-volumes/#persistentvolumeclaims)
|
||||
|
||||
### Minio独立模式快速入门
|
||||
|
||||
运行下面的命令快速启动
|
||||
|
||||
```sh
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-standalone-pvc.yaml?raw=true
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-standalone-deployment.yaml?raw=true
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-standalone-service.yaml?raw=true
|
||||
```
|
||||
|
||||
### 创建持久卷声明
|
||||
|
||||
Minio需要持久卷来存储对象。如果没有持久卷,Minio实例中的数据将会存到容器的文件系统中,而且在容器重启时会被清除的干干净净。
|
||||
创建一个持久卷声明(PVC),为Minio实例请求存储。Kubernetes寻找与群集中的PVC请求匹配的PV,并自动将其绑定到PVC。
|
||||
|
||||
这是一个PVC的描述
|
||||
|
||||
```sh
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
# 此名称唯一标识PVC。 将在以下部署中使用。
|
||||
name: minio-pv-claim
|
||||
annotations:
|
||||
volume.alpha.kubernetes.io/storage-class: anything
|
||||
labels:
|
||||
app: minio-storage-claim
|
||||
spec:
|
||||
# 关于 access modes的更多细节,访问这里: http://kubernetes.io/docs/user-guide/persistent-volumes/#access-modes
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
# This is the request for storage. Should be available in the cluster.
|
||||
requests:
|
||||
storage: 10Gi
|
||||
```
|
||||
|
||||
创建一个持久卷声明
|
||||
|
||||
```sh
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-standalone-pvc.yaml?raw=true
|
||||
persistentvolumeclaim "minio-pv-claim" created
|
||||
```
|
||||
|
||||
### 创建Minio的部署
|
||||
|
||||
部署封装了副本集和pod - 因此,如果pod掉线,复制控制器会确保另一个pod自动出现。 这样,您就不必担心pod失败,并且可以提供稳定的Minio服务。
|
||||
|
||||
这是一个部署的描述
|
||||
|
||||
```sh
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
# This name uniquely identifies the Deployment
|
||||
name: minio-deployment
|
||||
spec:
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
# Label is used as selector in the service.
|
||||
app: minio
|
||||
spec:
|
||||
# Refer to the PVC created earlier
|
||||
volumes:
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
# Name of the PVC created earlier
|
||||
claimName: minio-pv-claim
|
||||
containers:
|
||||
- name: minio
|
||||
# Pulls the default Minio image from Docker Hub
|
||||
image: minio/minio:RELEASE.2017-05-05T01-14-51Z
|
||||
args:
|
||||
- server
|
||||
- /data
|
||||
env:
|
||||
# Minio access key and secret key
|
||||
- name: MINIO_ACCESS_KEY
|
||||
value: "minio"
|
||||
- name: MINIO_SECRET_KEY
|
||||
value: "minio123"
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
hostPort: 9000
|
||||
# Mount the volume into the pod
|
||||
volumeMounts:
|
||||
- name: data # must match the volume name, above
|
||||
mountPath: "/data"
|
||||
```
|
||||
|
||||
创建一个部署
|
||||
|
||||
```sh
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-standalone-deployment.yaml?raw=true
|
||||
deployment "minio-deployment" created
|
||||
```
|
||||
|
||||
### 创建Miniio服务
|
||||
|
||||
现在您正在运行Minio部署,您可能希望在内部(集群内)访问它,或者将其作为服务暴露在外部(集群外部,也可能是公共Internet)IP地址,具体取决于用例。 您可以使用服务来实现此目的。 有三种主要的服务类型 - 默认类型是ClusterIP,它将集群内部的连接暴露给服务。 NodePort和LoadBalancer是向外部流量提供服务的两种类型。
|
||||
|
||||
在此示例中,我们通过创建LoadBalancer服务来公开Minio部署。
|
||||
这是服务描述。
|
||||
|
||||
```sh
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: minio-service
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
ports:
|
||||
- port: 9000
|
||||
targetPort: 9000
|
||||
protocol: TCP
|
||||
selector:
|
||||
app: minio
|
||||
```
|
||||
创建Minio服务
|
||||
|
||||
```sh
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-standalone-service.yaml?raw=true
|
||||
service "minio-service" created
|
||||
```
|
||||
|
||||
`LoadBalancer` 服务需要几分钟才能启动。 要检查服务是否已成功创建,请运行命令
|
||||
|
||||
```sh
|
||||
kubectl get svc minio-service
|
||||
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
minio-service 10.55.248.23 104.199.249.165 9000:31852/TCP 1m
|
||||
```
|
||||
|
||||
### 更新已有的Minio部署
|
||||
|
||||
您可以更新现有的Minio部署以使用较新的Minio版本。 为此,请使用`kubectl set image`命令:
|
||||
|
||||
```sh
|
||||
kubectl set image deployment/minio-deployment minio=<replace-with-new-minio-image>
|
||||
```
|
||||
|
||||
Kubernetes将重新启动部署以更新镜像。 成功更新后,您将收到以下消息:
|
||||
|
||||
```
|
||||
deployment "minio-deployment" image updated
|
||||
```
|
||||
|
||||
### 独立模式资源清理
|
||||
|
||||
你可以清理集群占用的资源,请运行:
|
||||
|
||||
```sh
|
||||
kubectl delete deployment minio-deployment \
|
||||
&& kubectl delete pvc minio-pv-claim \
|
||||
&& kubectl delete svc minio-service
|
||||
```
|
||||
|
||||
## Minio分布式服务部署
|
||||
|
||||
以下文档介绍了在Kubernetes上部署[分布式Minio](https://docs.minio.io/docs/zh_CN/distributed-minio-quickstart-guide)服务器的过程。 本示例使用Docker Hub的[官方Minio Docker镜像](https://hub.docker.com/r/minio/minio/~/dockerfile/)。
|
||||
|
||||
此示例使用以下Kubernetes的核心组件:
|
||||
|
||||
- [_Pods_](https://kubernetes.io/docs/concepts/workloads/pods/pod/)
|
||||
- [_Services_](https://kubernetes.io/docs/concepts/services-networking/service/)
|
||||
- [_Statefulsets_](https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/)
|
||||
|
||||
### 分布式快速入门
|
||||
|
||||
运行下面的命令快速启动
|
||||
|
||||
```sh
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-distributed-headless-service.yaml?raw=true
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-distributed-statefulset.yaml?raw=true
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-distributed-service.yaml?raw=true
|
||||
```
|
||||
|
||||
###创建Minio Headless服务
|
||||
|
||||
Headless服务控制在其中创建StatefulSets的域。此服务管理的域采用以下格式:`$(service name).$(namespace).svc.cluster.local`(其中“cluster.local”是集群域),此域中的pod采用形式: `$(pod-name-{i}).$(service name).$(namespace).svc.cluster.local`。这里需要DNS来解析在Statefulset中创建的每个pods的URL。
|
||||
|
||||
这是Headless service的描述。
|
||||
|
||||
```sh
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: minio
|
||||
labels:
|
||||
app: minio
|
||||
spec:
|
||||
clusterIP: None
|
||||
ports:
|
||||
- port: 9000
|
||||
name: minio
|
||||
selector:
|
||||
app: minio
|
||||
```
|
||||
|
||||
创建Headless服务
|
||||
|
||||
```sh
|
||||
$ kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-distributed-headless-service.yaml?raw=true
|
||||
service "minio" created
|
||||
```
|
||||
|
||||
###创建Minio Statefulset
|
||||
|
||||
StatefulSet为每个pod提供确定性名称和唯一身份,从而轻松部署有状态的分布式应用程序。 要启动分布式Minio,您需要将驱动器位置作为参数传递到minio服务的命令。 然后,您需要在所有参与的pod上运行相同的命令。 StatefulSets提供了一个完美的方式来处理这个要求。
|
||||
|
||||
这是Statefulset的描述。
|
||||
|
||||
```sh
|
||||
apiVersion: apps/v1beta1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: minio
|
||||
spec:
|
||||
serviceName: minio
|
||||
replicas: 4
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
pod.alpha.kubernetes.io/initialized: "true"
|
||||
labels:
|
||||
app: minio
|
||||
spec:
|
||||
containers:
|
||||
- name: minio
|
||||
env:
|
||||
- name: MINIO_ACCESS_KEY
|
||||
value: "minio"
|
||||
- name: MINIO_SECRET_KEY
|
||||
value: "minio123"
|
||||
image: minio/minio:RELEASE.2017-05-05T01-14-51Z
|
||||
args:
|
||||
- server
|
||||
- http://minio-0.minio.default.svc.cluster.local/data
|
||||
- http://minio-1.minio.default.svc.cluster.local/data
|
||||
- http://minio-2.minio.default.svc.cluster.local/data
|
||||
- http://minio-3.minio.default.svc.cluster.local/data
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
hostPort: 9000
|
||||
# These volume mounts are persistent. Each pod in the PetSet
|
||||
# gets a volume mounted based on this field.
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /data
|
||||
# These are converted to volume claims by the controller
|
||||
# and mounted at the paths mentioned above.
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: data
|
||||
annotations:
|
||||
volume.alpha.kubernetes.io/storage-class: anything
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
```
|
||||
|
||||
创建Statefulset
|
||||
|
||||
```sh
|
||||
$ kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-distributed-statefulset.yaml?raw=true
|
||||
statefulset "minio" created
|
||||
```
|
||||
|
||||
### 创建负载均衡服务
|
||||
|
||||
现在您已经运行了Minio statefulset,您可能希望在内部(集群内)访问它,或将其作为服务暴露在外部(集群外,也可能是公用Internet)的IP地址,具体取决于用例。 您可以使用服务来实现此目的。 有三种主要的服务类型 - 默认类型是ClusterIP,它将集群内部的连接暴露给服务。 NodePort和LoadBalancer是向外部流量提供服务的两种类型。
|
||||
|
||||
在此示例中,我们通过创建LoadBalancer服务来公开Minio部署。
|
||||
这是服务描述。
|
||||
|
||||
```sh
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: minio-service
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
ports:
|
||||
- port: 9000
|
||||
targetPort: 9000
|
||||
protocol: TCP
|
||||
selector:
|
||||
app: minio
|
||||
```
|
||||
创建Minio service
|
||||
|
||||
```sh
|
||||
$ kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-distributed-service.yaml?raw=true
|
||||
service "minio-service" created
|
||||
```
|
||||
|
||||
`LoadBalancer` 服务需要几分钟才能启动。 要检查服务是否已成功创建,请运行命令
|
||||
|
||||
```sh
|
||||
$ kubectl get svc minio-service
|
||||
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
minio-service 10.55.248.23 104.199.249.165 9000:31852/TCP 1m
|
||||
```
|
||||
|
||||
###更新已经存在的Minio StatefulSet
|
||||
您可以更新现有的Minio StatefulSet以使用较新的Minio版本。 为此,请使用`kubectl patch statefulset`命令:
|
||||
|
||||
```sh
|
||||
kubectl patch statefulset minio --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"<replace-with-new-minio-image>"}]'
|
||||
```
|
||||
|
||||
成功更新后,您应该会看到下面的输出
|
||||
|
||||
```
|
||||
statefulset "minio" patched
|
||||
```
|
||||
|
||||
然后如下所示,逐一删除StatefulSet中的所有pod。 Kubernetes将使用新的镜像为您重新启动那些pod。
|
||||
|
||||
```sh
|
||||
kubectl delete minio-0
|
||||
```
|
||||
|
||||
### 分布式模式资源清理
|
||||
|
||||
你可以使用以下命令清理集群
|
||||
```sh
|
||||
kubectl delete statefulset minio \
|
||||
&& kubectl delete svc minio \
|
||||
&& kubectl delete svc minio-service
|
||||
```
|
||||
|
||||
## Minio GCS网关部署
|
||||
|
||||
以下部分介绍在Kubernetes上部署[Minio](https://minio.io/)GCS Gateway的过程。 部署使用Docker Hub的[官方Minio Docker映像](https://hub.docker.com/r/minio/minio/~/dockerfile/)。
|
||||
|
||||
此示例使用以下Kubernetes的核心组件:
|
||||
|
||||
- [_Secrets_](https://kubernetes.io/docs/concepts/configuration/secret/)
|
||||
- [_Services_](https://kubernetes.io/docs/user-guide/services/)
|
||||
- [_Deployments_](https://kubernetes.io/docs/user-guide/deployments/)
|
||||
|
||||
### GCS 网关快速入门
|
||||
|
||||
按照 [这里](https://github.com/minio/minio/blob/master/docs/gateway/gcs.md#create-service-account-key-for-gcs-and-get-the-credentials-file)描述的步骤创建Google云服务认证凭据文件。
|
||||
|
||||
使用上面生成的文件来创建一个Kubernetes`secret`。
|
||||
|
||||
```sh
|
||||
kubectl create secret generic gcs-credentials --from-file=/path/to/gcloud/credentials/application_default_credentials.json
|
||||
```
|
||||
|
||||
下载 `minio-gcs-gateway-deployment.yaml`
|
||||
|
||||
```sh
|
||||
wget https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-gcs-gateway-deployment.yaml?raw=true
|
||||
```
|
||||
|
||||
使用你的GCS project ID更新 `gcp_project_id`部分的内容,然后运行
|
||||
|
||||
```sh
|
||||
kubectl create -f minio-gcs-gateway-deployment.yaml
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-gcs-gateway-service.yaml?raw=true
|
||||
```
|
||||
|
||||
### 创建GCS凭据
|
||||
|
||||
`凭据`旨在保存敏感信息,例如密码,OAuth令牌和ssh密钥。 将这些信息放在一个凭据中比将其逐字地放在pod定义或docker镜像中更安全,更灵活。
|
||||
|
||||
按照 [这里](https://github.com/minio/minio/blob/master/docs/gateway/gcs.md#create-service-account-key-for-gcs-and-get-the-credentials-file)描述的步骤创建Google云服务认证凭据文件。
|
||||
|
||||
使用上面生成的文件来创建一个Kubernetes`secret`。
|
||||
|
||||
```sh
|
||||
kubectl create secret generic gcs-credentials --from-file=/path/to/gcloud/credentials/application_default_credentials.json
|
||||
```
|
||||
|
||||
### 创建Minio GCS Gateway部署
|
||||
|
||||
部署封装了副本集和pod - 因此,如果pod掉线,复制控制器会确保另一个pod自动出现。 这样,您就不必担心pod失败,并且可以提供稳定的Minio服务。
|
||||
|
||||
Minio Gateway使用GCS作为其存储后端,需要使用GCP“projectid”来识别您的凭据。 使用GCS项目ID更新“gcp_project_id”部分。 这是部署描述。
|
||||
|
||||
```sh
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
# This name uniquely identifies the Deployment
|
||||
name: minio-deployment
|
||||
spec:
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
# Label is used as selector in the service.
|
||||
app: minio
|
||||
spec:
|
||||
# Refer to the secret created earlier
|
||||
volumes:
|
||||
- name: gcs-credentials
|
||||
secret:
|
||||
# Name of the Secret created earlier
|
||||
secretName: gcs-credentials
|
||||
containers:
|
||||
- name: minio
|
||||
# Pulls the default Minio image from Docker Hub
|
||||
image: minio/minio:RELEASE.2017-08-05T00-00-53Z
|
||||
args:
|
||||
- gateway
|
||||
- gcs
|
||||
- gcp_project_id
|
||||
env:
|
||||
# Minio access key and secret key
|
||||
- name: MINIO_ACCESS_KEY
|
||||
value: "minio"
|
||||
- name: MINIO_SECRET_KEY
|
||||
value: "minio123"
|
||||
# Google Cloud Service uses this variable
|
||||
- name: GOOGLE_APPLICATION_CREDENTIALS
|
||||
value: "/etc/credentials/application_default_credentials.json"
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
hostPort: 9000
|
||||
# Mount the volume into the pod
|
||||
volumeMounts:
|
||||
- name: gcs-credentials
|
||||
mountPath: "/etc/credentials"
|
||||
readOnly: true
|
||||
```
|
||||
|
||||
创建部署
|
||||
|
||||
```sh
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-gcs-gateway-deployment.yaml?raw=true
|
||||
deployment "minio-deployment" created
|
||||
```
|
||||
|
||||
### 创建Minio LoadBalancer服务
|
||||
|
||||
现在您正在运行Minio,您可能希望在内部(集群内)访问它,或者将其作为服务暴露在外部(集群外部,也可能是公共Internet)IP地址,具体取决于用例。 您可以使用服务来实现此目的。 有三种主要的服务类型 - 默认类型是ClusterIP,它将集群内部的连接暴露给服务。 NodePort和LoadBalancer是向外部流量提供服务的两种类型。
|
||||
|
||||
在此示例中,我们通过创建LoadBalancer服务来暴露Minio。 这是服务描述。
|
||||
|
||||
```sh
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: minio-service
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
ports:
|
||||
- port: 9000
|
||||
targetPort: 9000
|
||||
protocol: TCP
|
||||
selector:
|
||||
app: minio
|
||||
```
|
||||
创建Minio服务
|
||||
|
||||
```sh
|
||||
kubectl create -f https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/minio-gcs-gateway-service.yaml?raw=true
|
||||
service "minio-service" created
|
||||
```
|
||||
|
||||
`LoadBalancer`服务需要几分钟才能启动。 要检查服务是否已成功创建,请运行命令
|
||||
|
||||
```sh
|
||||
kubectl get svc minio-service
|
||||
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
minio-service 10.55.248.23 104.199.249.165 9000:31852/TCP 1m
|
||||
```
|
||||
|
||||
### 更新现有的Minio GCS部署
|
||||
|
||||
您可以更新现有的Minio部署以使用较新的Minio版本。 为此,请使用`kubectl set image`命令:
|
||||
|
||||
```sh
|
||||
kubectl set image deployment/minio-deployment minio=<replace-with-new-minio-image>
|
||||
```
|
||||
|
||||
Kubernetes将重新启动部署以更新镜像。 成功更新后,您将收到以下消息:
|
||||
```
|
||||
deployment "minio-deployment" image updated
|
||||
```
|
||||
|
||||
### GCS网关资源清理
|
||||
|
||||
你可以使用下面的命令清理集群
|
||||
|
||||
```sh
|
||||
kubectl delete deployment minio-deployment \
|
||||
&& kubectl delete secret gcs-credentials
|
||||
```
|
||||
155
docs/zh_CN/orchestration/kubernetes/README.md
Normal file
155
docs/zh_CN/orchestration/kubernetes/README.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# 使用Kubernetes部署Minio [](https://slack.minio.io) [](https://goreportcard.com/report/minio/minio) [](https://hub.docker.com/r/minio/minio/) [](https://codecov.io/gh/minio/minio)
|
||||
|
||||
Kubernetes的部署和状态集提供了在独立,分布式或共享模式下部署Minio服务器的完美平台。 在Kubernetes上部署Minio有多种选择,您可以选择最适合您的。
|
||||
|
||||
- Minio [Helm](https://helm.sh) Chart通过一个简单的命令即可提供自定义而且简单的Minio部署。更多关于Minio Helm部署的资料,请访问[这里](#prerequisites).
|
||||
|
||||
- 你也可以浏览Kubernetes [Minio示例](https://github.com/minio/minio/blob/master/docs/orchestration/kubernetes-yaml/README.md) ,通过`.yaml`文件来部署Minio。
|
||||
|
||||
- 如果您想在Kubernetes上开始使用Minio,而无需创建真正的容器集群,您也可以使用Minikube [deploy Minio locally](https://raw.githubusercontent.com/minio/minio/master/docs/orchestration/minikube/README.md)。
|
||||
|
||||
<a name="prerequisites"></a>
|
||||
## 1. 前提条件
|
||||
|
||||
* 默认standaline模式下,需要开启Beta API的Kubernetes 1.4+。
|
||||
* [distributed 模式](#distributed-minio),需要开启Beta API的Kubernetes 1.5+。
|
||||
* 底层支持PV provisioner。
|
||||
* 你的K8s集群里需要有Helm package manager [installed](https://github.com/kubernetes/helm#install)。
|
||||
|
||||
## 2. 使用Helm Chart部署Minio
|
||||
|
||||
安装 Minio chart
|
||||
|
||||
```bash
|
||||
$ helm install stable/minio
|
||||
```
|
||||
以上命令以默认配置在Kubernetes群集上部署Minio。 以下部分列出了Minio图表的所有可配置参数及其默认值。
|
||||
|
||||
### 配置
|
||||
|
||||
| 参数 | 描述 | 默认值 |
|
||||
|----------------------------|-------------------------------------|---------------------------------------------------------|
|
||||
| `image` | Minio镜像名称 | `minio/minio` |
|
||||
| `imageTag` | Minio镜像tag. 可选值在 [这里](https://hub.docker.com/r/minio/minio/tags/).| `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`。 比如,
|
||||
|
||||
```bash
|
||||
$ helm install --name my-release \
|
||||
--set persistence.size=100Gi \
|
||||
stable/minio
|
||||
```
|
||||
|
||||
上述命令部署了一个带上100G持久卷的Minio服务。
|
||||
|
||||
或者,您可以提供一个YAML文件,用于在安装chart时指定参数值。 例如,
|
||||
|
||||
```bash
|
||||
$ helm install --name my-release -f values.yaml stable/minio
|
||||
```
|
||||
|
||||
### 分布式Minio
|
||||
|
||||
默认情况下,此图表以独立模式提供Minio服务器。 要在[分布式模式](https://docs.minio.io/docs/zh_CN/distributed-minio-quickstart-guide)中配置Minio服务器,请将`mode`字段设置为`distributed`,
|
||||
|
||||
```bash
|
||||
$ helm install --set mode=distributed stable/minio
|
||||
```
|
||||
|
||||
上述命令部署了个带有4个节点的分布式Minio服务器。 要更改分布式Minio服务器中的节点数,请设置`numberOfNodes`属性。
|
||||
|
||||
|
||||
```bash
|
||||
$ helm install --set mode=distributed,numberOfNodes=8 stable/minio
|
||||
```
|
||||
|
||||
上述命令部署了个带有8个节点的分布式Minio服务器。注意一下,`numberOfNodes`取值范围是[4,16]。
|
||||
|
||||
#### StatefulSet [限制](http://kubernetes.io/docs/concepts/abstractions/controllers/statefulsets/#limitations),适用于分布式Minio
|
||||
|
||||
* StatefulSets需要持久化存储,所以如果 `mode`设成 `distributed`的话,`persistence.enabled`参数不生效。
|
||||
* 卸载分布式Minio版本时,需要手动删除与StatefulSet关联的卷。
|
||||
|
||||
### Shared Minio
|
||||
|
||||
如需采用[shared mode](https://github.com/minio/minio/blob/master/docs/shared-backend/README.md)部署Minio, 将`mode` 设为`shared`,
|
||||
|
||||
```bash
|
||||
$ helm install --set mode=shared stable/minio
|
||||
```
|
||||
|
||||
上述命令规定了4个Minio服务器节点,一个存储。 要更改共享的Minio部署中的节点数,请设置`numberOfNodes`字段,
|
||||
|
||||
```bash
|
||||
$ helm install --set mode=shared,numberOfNodes=8 stable/minio
|
||||
```
|
||||
|
||||
上述命令规定了Minio服务有8个节点,采用shared模式。
|
||||
|
||||
### 持久化
|
||||
|
||||
这里规定了PersistentVolumeClaim并将相应的持久卷挂载到默认位置`/export`。 您需要Kubernetes集群中的物理存储才能使其工作。 如果您宁愿使用`emptyDir`,请通过以下方式禁用PersistentVolumeClaim:
|
||||
|
||||
```bash
|
||||
$ helm install --set persistence.enabled=false stable/minio
|
||||
```
|
||||
|
||||
> *"当Pod分配给节点时,首先创建一个emptyDir卷,只要该节点上的Pod正在运行,它就会存在。 当某个Pod由于任何原因从节点中删除时,emptyDir中的数据将永久删除。"*
|
||||
|
||||
## 3. 使用Helm更新Minio版本
|
||||
|
||||
您可以更新现有的Minio Helm Release以使用较新的Minio Docker镜像。 为此,请使用`helm upgrade`命令:
|
||||
|
||||
```bash
|
||||
$ helm upgrade --set imageTag=<replace-with-minio-docker-image-tag> <helm-release-name> stable/minio
|
||||
```
|
||||
|
||||
如果更新成功,你可以看到下面的输出信息
|
||||
|
||||
```bash
|
||||
Release "your-helm-release" has been upgraded. Happy Helming!
|
||||
```
|
||||
|
||||
## 4. 卸载Chart
|
||||
|
||||
假设你的版本被命名为`my-release`,使用下面的命令删除它:
|
||||
|
||||
```bash
|
||||
$ helm delete my-release
|
||||
```
|
||||
|
||||
该命令删除与chart关联的所有Kubernetes组件,并删除该release。
|
||||
|
||||
### 提示
|
||||
|
||||
* 在Kubernetes群集中运行的chart的实例称为release。 安装chart后,Helm会自动分配唯一的release名称。 你也可以通过下面的命令设置你心仪的名称:
|
||||
|
||||
```bash
|
||||
$ helm install --name my-release stable/minio
|
||||
```
|
||||
|
||||
* 为了覆盖默认的秘钥,可在运行helm install时将access key和secret key做为参数传进去。
|
||||
|
||||
```bash
|
||||
$ helm install --set accessKey=myaccesskey,secretKey=mysecretkey \
|
||||
stable/minio
|
||||
```
|
||||
|
||||
### 了解更多
|
||||
- [Minio纠删码快速入门](https://docs.minio.io/docs/zh_CN/minio-erasure-code-quickstart-guide)
|
||||
- [Kubernetes文档](https://kubernetes.io/docs/home/)
|
||||
- [Helm package manager for kubernetes](https://helm.sh/)
|
||||
46
docs/zh_CN/orchestration/minikube/README.md
Normal file
46
docs/zh_CN/orchestration/minikube/README.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# 使用minikube在本地部署分布式Minio
|
||||
[](https://slack.minio.io) [](https://goreportcard.com/report/minio/minio) [](https://hub.docker.com/r/minio/minio/) [](https://codecov.io/gh/minio/minio)
|
||||
|
||||
Minikube在计算机的VM中运行单节点Kubernetes集群。 这样可以轻松地在计算机上本地运行的Kubernetes上部署分布式Minio服务器。
|
||||
|
||||
## 1. 前提条件
|
||||
|
||||
本机已经安装[Minikube](https://github.com/kubernetes/minikube/blob/master/README.md#installation) 和 [`kubectl`](https://kubernetes.io/docs/user-guide/prereqs/)
|
||||
|
||||
|
||||
## 2. 步骤
|
||||
|
||||
* 下载 `minio_distributed.sh` 和 `statefulset.yaml`
|
||||
|
||||
```sh
|
||||
wget https://raw.githubusercontent.com/minio/minio/master/docs/orchestration/minikube/minio_distributed.sh
|
||||
wget https://raw.githubusercontent.com/minio/minio/master/docs/orchestration/minikube/statefulset.yaml
|
||||
```
|
||||
|
||||
* 在命令提示符下执行`minio_distributed.sh`脚本。
|
||||
|
||||
```sh
|
||||
./minio_distributed.sh
|
||||
```
|
||||
|
||||
脚本执行成功后,您应该会收到一个这样的输出
|
||||
|
||||
```sh
|
||||
service "minio-public" created
|
||||
service "minio" created
|
||||
statefulset "minio" created
|
||||
```
|
||||
这意味着Minio部署在您当地的Minikube安装中。
|
||||
|
||||
请注意,服务“minio-public”是一个[clusterIP](https://kubernetes.io/docs/user-guide/services/#publishing-services---service-types)服务。 它在集群内部IP上暴露服务。 通过`kubectl port-forward`命令连接到Minio实例,执行
|
||||
|
||||
```
|
||||
kubectl port-forward minio-0 9000:9000
|
||||
```
|
||||
|
||||
Minio服务器现在可以在`http:// localhost:9000`访问,使用`statefulset.yaml`文件中所述的accessKey和secretKey。
|
||||
|
||||
## 3. 注意
|
||||
|
||||
Minikube目前不支持动态配置,因此我们手动创建PersistentVolumes(PV)和PersistentVolumeClaims(PVC)。 创建PV和PVC后,我们将调用`statefulset.yaml`配置文件来创建分布式的Minio设置。
|
||||
此设置在笔记本电脑/计算机上运行。 因此,只有一个磁盘用作所有minio实例PV的后端。 Minio将这些PV视为单独的磁盘,并报告可用存储不正确。
|
||||
Reference in New Issue
Block a user