diff --git a/zh/TOC.md b/zh/TOC.md
index 32e35bfca0..c134f47e09 100644
--- a/zh/TOC.md
+++ b/zh/TOC.md
@@ -9,10 +9,7 @@
- [简介](tidb-operator-overview.md)
- [What's New in v1.1](whats-new-in-v1.1.md)
- [TiDB Operator v1.1 重要注意事项](notes-tidb-operator-v1.1.md)
-+ 快速上手
- - [kind](deploy-tidb-from-kubernetes-kind.md)
- - [GKE](deploy-tidb-from-kubernetes-gke.md)
- - [Minikube](deploy-tidb-from-kubernetes-minikube.md)
++ [快速上手](get-started.md)
+ 部署
- 部署 TiDB 集群
- [部署到 AWS EKS](deploy-on-aws-eks.md)
diff --git a/zh/_index.md b/zh/_index.md
index b601d4c425..62581d92b5 100644
--- a/zh/_index.md
+++ b/zh/_index.md
@@ -29,9 +29,9 @@ TiDB Operator 与适用的 TiDB 版本的对应关系如下:
快速上手
-- [kind](deploy-tidb-from-kubernetes-kind.md)
-- [GKE](deploy-tidb-from-kubernetes-gke.md)
-- [Minikube](deploy-tidb-from-kubernetes-minikube.md)
+- [kind](get-started.md#使用-kind-创建-kubernetes-集群)
+- [Minikube](get-started.md#使用-minikube-创建-kubernetes-集群)
+- [Google Cloud Shell](https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https://github.com/pingcap/docs-tidb-operator&cloudshell_tutorial=zh/deploy-tidb-from-kubernetes-gke.md)
diff --git a/zh/deploy-tidb-from-kubernetes-gke.md b/zh/deploy-tidb-from-kubernetes-gke.md
index e89cbd434e..bf7f653196 100644
--- a/zh/deploy-tidb-from-kubernetes-gke.md
+++ b/zh/deploy-tidb-from-kubernetes-gke.md
@@ -6,7 +6,9 @@ category: how-to
# 在 GCP 上通过 Kubernetes 部署 TiDB 集群
-本文介绍如何使用 [TiDB Operator](https://github.com/pingcap/tidb-operator) 在 GCP 上部署 TiDB 集群。本教程需要在 [Google Cloud Shell](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/pingcap/tidb-operator&tutorial=docs/google-kubernetes-tutorial.md) 上运行。
+本文介绍如何使用 [TiDB Operator](https://github.com/pingcap/tidb-operator) 在 GCP 上部署 TiDB 集群。本教程需要在 [Google Cloud Shell](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/pingcap/docs-tidb-operator&tutorial=zh/deploy-tidb-from-kubernetes-gke.md) 上运行。
+
+
所包含的步骤如下:
@@ -42,8 +44,6 @@ category: how-to
这一步配置 glcoud 默认访问你要用的项目和[可用区](https://cloud.google.com/compute/docs/regions-zones/),可以简化后面用到的命令:
-{{< copyable "shell-regular" >}}
-
``` shell
gcloud config set project {{project-id}} && \
gcloud config set compute/zone us-west1-a
@@ -55,24 +55,18 @@ gcloud config set compute/zone us-west1-a
命令执行需要几分钟时间:
-{{< copyable "shell-regular" >}}
-
``` shell
gcloud container clusters create tidb
```
集群启动完成后,将其设置为默认集群:
-{{< copyable "shell-regular" >}}
-
``` shell
gcloud config set container/cluster tidb
```
最后验证 `kubectl` 可以访问集群并且 3 个节点正常运行:
-{{< copyable "shell-regular" >}}
-
``` shell
kubectl get nodes
```
@@ -81,84 +75,36 @@ kubectl get nodes
## 安装 Helm
-[Helm](https://helm.sh/) 是一个 Kubernetes 的包管理工具,确保安装的 Helm 版本为 >= 2.11.0 && < 3.0.0 && != [2.16.4](https://github.com/helm/helm/issues/7797)。安装步骤如下:
-
-1. 参考[官方文档](https://v2.helm.sh/docs/using_helm/#installing-helm)安装 Helm 客户端
-2. 安装 Helm 服务端
-
- 在集群中应用 Helm 服务端组件 `tiller` 所需的 `RBAC` 规则,并安装 `tiller`:
+[Helm](https://helm.sh/) 是一个 Kubernetes 的包管理工具。
- {{< copyable "shell-regular" >}}
+1. 安装 Helm 服务端
```shell
- kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/manifests/tiller-rbac.yaml && \
- helm init --service-account=tiller --upgrade
+ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
```
- 通过下面命令确认 `tiller` Pod 进入 running 状态:
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- kubectl get po -n kube-system -l name=tiller
- ```
-
-3. 通过下面的命令添加仓库:
-
- {{< copyable "shell-regular" >}}
+2. 通过下面的命令添加仓库:
```shell
helm repo add pingcap https://charts.pingcap.org/
```
- 添加完成后,可以使用 `helm search` 搜索 PingCAP 提供的 chart:
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- helm search pingcap -l
- ```
-
## 部署 TiDB Operator
TiDB Operator 使用 [Custom Resource Definition (CRD)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions) 扩展 Kubernetes,所以要使用 TiDB Operator,必须先创建 `TidbCluster` 等各种自定义资源类型:
-{{< copyable "shell-regular" >}}
-
```shell
-kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/manifests/crd.yaml && \
+kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.1.2/manifests/crd.yaml && \
kubectl get crd tidbclusters.pingcap.com
```
创建 `TidbCluster` 自定义资源类型后,接下来在 Kubernetes 集群上安装 TiDB Operator。
-1. 获取你要安装的 `tidb-operator` chart 中的 `values.yaml` 文件:
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- mkdir -p /home/tidb/tidb-operator && \
- helm inspect values pingcap/tidb-operator --version=v1.1.0-rc.1 > /home/tidb/tidb-operator/values-tidb-operator.yaml
- ```
-
- 按需修改 `values.yaml` 文件中的配置。
-
-2. 安装 TiDB Operator
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- helm install pingcap/tidb-operator --name=tidb-operator --namespace=tidb-admin --version=v1.1.0-rc.1 -f /home/tidb/tidb-operator/values-tidb-operator.yaml && \
- kubectl get po -n tidb-admin -l app.kubernetes.io/name=tidb-operator
- ```
-
-3. 创建 `pd-ssd` StorageClass:
-
- {{< copyable "shell-regular" >}}
-
- ``` shell
- kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/manifests/gke/persistent-disk.yaml
- ```
+```shell
+kubectl create namespace tidb-admin
+helm install --namespace tidb-admin tidb-operator pingcap/tidb-operator --version v1.1.2
+kubectl get po -n tidb-admin -l app.kubernetes.io/name=tidb-operator
+```
## 部署 TiDB 集群
@@ -166,32 +112,24 @@ kubectl get crd tidbclusters.pingcap.com
1. 创建 `Namespace`:
- {{< copyable "shell-regular" >}}
-
```shell
kubectl create namespace demo
```
2. 部署 TiDB 集群:
- {{< copyable "shell-regular" >}}
-
``` shell
kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/tidb-cluster.yaml -n demo
```
3. 部署 TiDB 集群监控:
- {{< copyable "shell-regular" >}}
-
``` shell
kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/tidb-monitor.yaml -n demo
```
4. 通过下面命令查看 Pod 状态:
- {{< copyable "shell-regular" >}}
-
``` shell
kubectl get po -n demo
```
@@ -200,8 +138,6 @@ kubectl get crd tidbclusters.pingcap.com
从 pod 启动、运行到服务可以访问有一些延时,可以通过下面命令查看服务:
-{{< copyable "shell-regular" >}}
-
``` shell
kubectl get svc -n demo --watch
```
@@ -210,16 +146,12 @@ kubectl get svc -n demo --watch
要访问 Kubernetes 集群中的 TiDB 服务,可以在 TiDB 服务和 Google Cloud Shell 之间建立一条隧道。建议这种方式只用于调试,因为如果 Google Cloud Shell 重启,隧道不会自动重新建立。要建立隧道:
-{{< copyable "shell-regular" >}}
-
``` shell
-kubectl -n demo port-forward svc/basic-tidb 4000:4000 &>/tmp/port-forward.log &
+kubectl -n demo port-forward svc/basic-tidb 4000:4000 &>/tmp/pf4000.log &
```
在 Cloud Shell 上运行:
-{{< copyable "shell-regular" >}}
-
``` shell
sudo apt-get install -y mysql-client && \
mysql -h 127.0.0.1 -u root -P 4000
@@ -227,16 +159,12 @@ mysql -h 127.0.0.1 -u root -P 4000
在 MySQL 终端中输入一条 MySQL 命令:
-{{< copyable "sql" >}}
-
``` sql
select tidb_version();
```
如果安装的过程中没有指定密码,现在可以设置:
-{{< copyable "sql" >}}
-
``` sql
SET PASSWORD FOR 'root'@'%' = '';
```
@@ -255,48 +183,44 @@ SET PASSWORD FOR 'root'@'%' = '';
使用 kubectl 修改集群所对应的 `TidbCluster` 对象中的 `spec.pd.replicas`、`spec.tidb.replicas`、`spec.tikv.replicas` 至期望值进行水平扩容。
-{{< copyable "shell-regular" >}}
-
``` shell
kubectl -n demo edit tc basic
```
## 访问 Grafana 面板
-要访问 Grafana 面板,可以在 Grafana 服务和 shell 之间建立一条隧道,可以使用如下命令:
-
-{{< copyable "shell-regular" >}}
+要访问 Grafana 面板,可以在 Grafana 服务和 shell 之间建立一条隧道,可以使用如下命令(Cloud Shell 占用了 3000 端口,我们选择 8080 做映射):
``` shell
-kubectl -n demo port-forward svc/basic-grafana 3000:3000 &>/dev/null &
+kubectl -n demo port-forward svc/basic-grafana 8080:3000 &>/tmp/pf8080.log &
```
-在 Cloud Shell 中,点击 Web Preview 按钮并输入端口 3000,将打开一个新的浏览器标签页访问 Grafana 面板。或者也可以在新浏览器标签或者窗口中直接访问 URL:。
+在 Cloud Shell 中,点击右上方的 Web Preview 按钮并修改端口为 8080 后点击预览,将打开一个新的浏览器标签页访问 Grafana 面板。或者也可以在新浏览器标签或者窗口中直接访问 URL:。
+
+如果没有使用 Cloud Shell,可以在浏览器中访问 `localhost:8080`。
-如果没有使用 Cloud Shell,可以在浏览器中访问 `localhost:3000`。
+默认用户名和密码为:admin / admin 。
+
+> **注意:**
+>
+> 默认会提醒修改账户密码,可点击 Skip 跳过。生产环境中建议配置安全密码。
## 销毁 TiDB 集群
要删除 TiDB 集群,执行以下命令:
-{{< copyable "shell-regular" >}}
-
```shell
kubectl delete tc basic -n demo
```
要删除监控组件,执行以下命令:
-{{< copyable "shell-regular" >}}
-
```shell
kubectl delete tidbmonitor basic -n demo
```
上面的命令只会删除运行的 Pod,但是数据还会保留。如果你不再需要那些数据,可以执行下面的命令清除数据和动态创建的持久化磁盘:
-{{< copyable "shell-regular" >}}
-
``` shell
kubectl delete pvc -n demo -l app.kubernetes.io/instance=basic,app.kubernetes.io/managed-by=tidb-operator && \
kubectl get pv -l app.kubernetes.io/namespace=demo,app.kubernetes.io/managed-by=tidb-operator,app.kubernetes.io/instance=basic -o name | xargs -I {} kubectl patch {} -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}'
@@ -306,12 +230,10 @@ kubectl get pv -l app.kubernetes.io/namespace=demo,app.kubernetes.io/managed-by=
实验结束后,可以使用如下命令删除 Kubernetes 集群:
-{{< copyable "shell-regular" >}}
-
``` shell
gcloud container clusters delete tidb
```
## 更多信息
-我们还提供[基于 Terraform 的部署方案](deploy-on-gcp-gke.md)。
+了解更多在 GKE 生成环境部署,可以参考我们的 [GKE 部署文档](https://docs.pingcap.com/tidb-in-kubernetes/stable/deploy-on-gcp-gke)。
diff --git a/zh/deploy-tidb-from-kubernetes-minikube.md b/zh/deploy-tidb-from-kubernetes-minikube.md
deleted file mode 100644
index 73f620e256..0000000000
--- a/zh/deploy-tidb-from-kubernetes-minikube.md
+++ /dev/null
@@ -1,288 +0,0 @@
----
-title: 在 Minikube 集群上部署 TiDB 集群
-summary: 介绍如何在 Minikube 集群上部署 TiDB 集群。
-category: how-to
----
-
-# 在 Minikube 集群上部署 TiDB 集群
-
-[Minikube](https://kubernetes.io/docs/setup/minikube/) 可以让你在个人电脑上的虚拟机中创建一个 Kubernetes 集群,支持 macOS、Linux 和 Windows 系统。本文介绍如何在 Minikube 集群上部署 TiDB 集群。
-
-> **警告:**
->
-> - 对于生产环境,不要使用此方式进行部署。
->
-> - 尽管 Minikube 支持通过 `--vm-driver=none` 选项使用主机 Docker 而不使用虚拟机,但是目前尚没有针对 TiDB Operator 做过全面的测试,可能会无法正常工作。如果你想在不支持虚拟化的系统(例如,VPS)上试用 TiDB Operator,可以考虑使用 [kind](deploy-tidb-from-kubernetes-kind.md)。
-
-## 安装 Minikube 并启动 Kubernetes 集群
-
-参考[安装 Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/),在你的机器上安装 Minikube 1.0.0+。
-
-安装完 Minikube 后,可以执行下面命令启动一个 Kubernetes 集群:
-
-{{< copyable "shell-regular" >}}
-
-``` shell
-minikube start
-```
-
-对于中国大陆用户,可以使用国内 gcr.io mirror 仓库,例如 `registry.cn-hangzhou.aliyuncs.com/google_containers`。
-
-{{< copyable "shell-regular" >}}
-
-``` shell
-minikube start --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
-```
-
-或者给 Docker 配置 HTTP/HTTPS 代理。
-
-将下面命令中的 `127.0.0.1:1086` 替换为你自己的 HTTP/HTTPS 代理地址:
-
-{{< copyable "shell-regular" >}}
-
-``` shell
-minikube start --docker-env https_proxy=http://127.0.0.1:1086 \
- --docker-env http_proxy=http://127.0.0.1:1086
-```
-
-> **注意:**
->
-> 由于 Minikube 通过虚拟机(默认)运行,`127.0.0.1` 是虚拟机本身,有些情况下你可能想要使用你的主机的实际 IP。
-
-参考 [Minikube setup](https://kubernetes.io/docs/setup/minikube/) 查看配置虚拟机和 Kubernetes 集群的更多选项。
-
-## 安装 kubectl 并访问集群
-
-Kubernetes 命令行工具 [kubectl](https://kubernetes.io/docs/user-guide/kubectl/),可以让你执行命令访问 Kubernetes 集群。
-
-参考 [Install and Set Up kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) 安装和配置 kubectl。
-
-kubectl 安装完成后,测试 Minikube Kubernetes 集群:
-
-{{< copyable "shell-regular" >}}
-
-``` shell
-kubectl cluster-info
-```
-
-## 安装 Helm
-
-[Helm](https://helm.sh/) 是一个 Kubernetes 的包管理工具,确保安装的 Helm 版本为 >= 2.11.0 && < 3.0.0 && != [2.16.4](https://github.com/helm/helm/issues/7797)。安装步骤如下:
-
-1. 参考[官方文档](https://v2.helm.sh/docs/using_helm/#installing-helm)安装 Helm 客户端
-2. 安装 Helm 服务端
-
- 在集群中应用 Helm 服务端组件 `tiller` 所需的 `RBAC` 规则,并安装 `tiller`:
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/manifests/tiller-rbac.yaml && \
- helm init --service-account=tiller --upgrade
- ```
-
- 通过下面命令确认 `tiller` Pod 进入 running 状态:
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- kubectl get po -n kube-system -l name=tiller
- ```
-
-3. 通过下面的命令添加仓库:
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- helm repo add pingcap https://charts.pingcap.org/
- ```
-
- 添加完成后,可以使用 `helm search` 搜索 PingCAP 提供的 chart:
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- helm search pingcap -l
- ```
-
-## 部署 TiDB Operator
-
-TiDB Operator 使用 [CRD (Custom Resource Definition)](https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/) 扩展 Kubernetes,所以要使用 TiDB Operator,必须先创建 `TidbCluster` 等各种自定义资源类型:
-
-{{< copyable "shell-regular" >}}
-
-```shell
-kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/manifests/crd.yaml && \
-kubectl get crd tidbclusters.pingcap.com
-```
-
-创建 `TidbCluster` 自定义资源类型后,接下来在 Kubernetes 集群上安装 TiDB Operator。
-
-1. 获取你要安装的 `tidb-operator` chart 中的 `values.yaml` 文件:
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- mkdir -p /home/tidb/tidb-operator && \
- helm inspect values pingcap/tidb-operator --version=v1.1.0-rc.1 > /home/tidb/tidb-operator/values-tidb-operator.yaml
- ```
-
- 按需修改 `values.yaml` 文件中的配置。
-
-2. 安装 TiDB Operator
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- helm install pingcap/tidb-operator --name=tidb-operator --namespace=tidb-admin --version=v1.1.0-rc.1 -f /home/tidb/tidb-operator/values-tidb-operator.yaml && \
- kubectl get po -n tidb-admin -l app.kubernetes.io/name=tidb-operator
- ```
-
-## 部署 TiDB 集群
-
-通过下面命令部署 TiDB 集群:
-
-1. 创建 `Namespace`:
-
- {{< copyable "shell-regular" >}}
-
- ```shell
- kubectl create namespace demo
- ```
-
-2. 部署 TiDB 集群:
-
- {{< copyable "shell-regular" >}}
-
- ``` shell
- kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/tidb-cluster.yaml -n demo
- ```
-
-3. 部署 TiDB 集群监控:
-
- {{< copyable "shell-regular" >}}
-
- ``` shell
- kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/tidb-monitor.yaml -n demo
- ```
-
-4. 通过下面命令查看 Pod 状态:
-
- {{< copyable "shell-regular" >}}
-
- ``` shell
- kubectl get po -n demo
- ```
-
-## 测试 TiDB 集群
-
-测试 TiDB 集群之前,请确保已经安装 MySQL 客户端。从 Pod 启动、运行到服务可以访问有一些延时,可以通过下面命令查看服务:
-
-{{< copyable "shell-regular" >}}
-
-``` shell
-kubectl get svc -n demo --watch
-```
-
-如果看到 `basic-tidb` 出现,说明服务已经可以访问,可以 Ctrl+C 停止。
-
-按照以下步骤访问 TiDB 集群:
-
-1. 转发本地端口到 TiDB 端口。
-
- {{< copyable "shell-regular" >}}
-
- ``` shell
- kubectl -n demo port-forward svc/basic-tidb 4000:4000
- ```
-
-2. 在另一个终端窗口中,通过 MySQL 客户端访问 TiDB:
-
- {{< copyable "shell-regular" >}}
-
- ``` shell
- mysql -h 127.0.0.1 -P 4000 -uroot
- ```
-
- 或者可以直接执行 SQL 命令:
-
- {{< copyable "shell-regular" >}}
-
- ``` shell
- mysql -h 127.0.0.1 -P 4000 -uroot -e 'select tidb_version();'
- ```
-
-> **注意:**
->
-> TiDB(v4.0.2 起)默认会定期收集使用情况信息,并将这些信息分享给 PingCAP 用于改善产品。若要了解所收集的信息详情及如何禁用该行为,请参见[遥测](https://docs.pingcap.com/zh/tidb/stable/telemetry)。
-
-## 监控 TiDB 集群
-
-按照以下步骤监控 TiDB 集群状态:
-
-1. 转发本地端口到 Grafana 端口。
-
- {{< copyable "shell-regular" >}}
-
- ``` shell
- kubectl -n demo port-forward svc/basic-grafana 3000:3000
- ```
-
-2. 打开浏览器,通过 `http://localhost:3000` 访问 Grafana。
-
- 或者,Minikube 提供了 `minikube service` 的方式暴露 Grafana 服务,可以更方便的接入。
-
- {{< copyable "shell-regular" >}}
-
- ``` shell
- minikube service basic-grafana -n demo
- ```
-
- 上述命令会自动搭建代理并在浏览器中打开 Grafana。
-
-### 删除 TiDB 集群
-
-要删除 TiDB 集群,执行以下命令:
-
-{{< copyable "shell-regular" >}}
-
-```shell
-kubectl delete tc basic -n demo
-```
-
-要删除监控组件,执行以下命令:
-
-{{< copyable "shell-regular" >}}
-
-```shell
-kubectl delete tidbmonitor basic -n demo
-```
-
-更新 demo 集群使用的 PV 的 reclaim 策略为 Delete:
-
-{{< copyable "shell-regular" >}}
-
-``` shell
-kubectl get pv -l app.kubernetes.io/instance=basic -o name | xargs -I {} kubectl patch {} -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}'
-```
-
-删除 PVC:
-
-{{< copyable "shell-regular" >}}
-
-``` shell
-kubectl delete pvc -l app.kubernetes.io/managed-by=tidb-operator
-```
-
-## FAQ
-
-### Minikube 上的 TiDB 集群不响应或者响应非常慢
-
-Minikube 虚拟机默认配置为 2048 MB 内存和 2 个 CPU。可以在 `minikube start` 时通过`--memory` 和 `--cpus` 选项为其分配更多资源。注意,为了使配置修改生效,你需要重新创建 Minikube 虚拟机。
-
-{{< copyable "shell-regular" >}}
-
-``` shell
-minikube delete && \
-minikube start --cpus 4 --memory 4096 ...
-```
diff --git a/zh/deploy-tidb-operator.md b/zh/deploy-tidb-operator.md
index 7f2eed99ab..4cb46d24b1 100644
--- a/zh/deploy-tidb-operator.md
+++ b/zh/deploy-tidb-operator.md
@@ -20,11 +20,7 @@ TiDB Operator 部署前,请确认以下软件需求:
## 部署 Kubernetes 集群
-TiDB Operator 运行在 Kubernetes 集群,你可以使用 [Getting started 页面](https://kubernetes.io/docs/setup/)列出的任何一种方法搭建一套 Kubernetes 集群。只要保证 Kubernetes 版本大于等于 v1.12。如果你使用 AWS、GKE 或者本机,下面是快速上手教程:
-
-* [kind 教程](deploy-tidb-from-kubernetes-kind.md)
-* [Google GKE 教程](deploy-tidb-from-kubernetes-gke.md)
-* [AWS EKS 教程](deploy-on-aws-eks.md)
+TiDB Operator 运行在 Kubernetes 集群,你可以使用 [Getting started 页面](https://kubernetes.io/docs/setup/)列出的任何一种方法搭建一套 Kubernetes 集群。只要保证 Kubernetes 版本大于等于 v1.12。若想创建一个简单集群测试,可以参考[快速上手教程](get-started.md)。
TiDB Operator 使用[持久化卷](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)持久化存储 TiDB 集群数据(包括数据库,监控和备份数据),所以 Kubernetes 集群必须提供至少一种持久化卷。为提高性能,建议使用本地 SSD 盘作为持久化卷。可以根据[这一步](#配置本地持久化卷)配置本地持久化卷。
diff --git a/zh/get-started.md b/zh/get-started.md
new file mode 100644
index 0000000000..16df4c7cc9
--- /dev/null
+++ b/zh/get-started.md
@@ -0,0 +1,834 @@
+---
+title: Kubernetes 上使用 TiDB Operator 快速上手
+summary: 介绍如何在 Kubernetes 上使用 TiDB Operator 部署 TiDB 集群
+category: how-to
+aliases: ['/docs-cn/dev/tidb-in-kubernetes/deploy-tidb-from-kubernetes-dind/', '/docs-cn/dev/tidb-in-kubernetes/deploy-tidb-from-kubernetes-kind/', '/docs-cn/dev/tidb-in-kubernetes/deploy-tidb-from-kubernetes-minikube/','/docs-cn/tidb-in-kubernetes/dev/deploy-tidb-from-kubernetes-kind/','/docs-cn/tidb-in-kubernetes/dev/deploy-tidb-from-kubernetes-minikube/','/zh/tidb-in-kubernetes/dev/deploy-tidb-from-kubernetes-kind/','/zh/tidb-in-kubernetes/v1.1/deploy-tidb-from-kubernetes-gke/','/zh/tidb-in-kubernetes/v1.1/deploy-tidb-from-kubernetes-minikube']
+---
+
+# Kubernetes 上使用 TiDB Operator 快速上手
+
+本文档介绍了如何创建一个简单的 Kubernetes 集群,部署 TiDB Operator,并使用 TiDB Operator 部署 TiDB 集群。
+
+> **警告:**
+>
+> 本文中部署例子仅用于测试目的。**不要**直接用于生产环境。
+
+基本步骤如下:
+
+1. [创建 Kubernetes 集群](#创建-kubernetes-集群)
+2. [部署 TiDB Operator](#部署-tidb-operator)
+3. [部署 TiDB Cluster](#部署-tidb-集群)
+4. [连接 TiDB](#连接-tidb)
+
+如果你已经有一个 Kubernetes 集群,可直接[部署 TiDB Operator](#部署-tidb-operator)。
+
+如果你想做生产部署,参考以下文档:
+
+- 公有云
+ - [AWS 部署文档](deploy-on-aws-eks.md)
+ - [GKE 部署文档 (beta)](deploy-on-gcp-gke.md)
+ - [阿里云部署文档](deploy-on-alibaba-cloud.md)
+- 其他 Kubernetes 集群
+ - 熟悉[集群环境要求](prerequisites.md)
+ - 参考[本地 PV 配置](configure-storage-class.md#本地-pv-配置) 配置本地存储,以便让 TiKV 使用低延迟本地存储
+ - 参考[在 Kubernetes 部署 TiDB Operator](deploy-tidb-operator.md) 部署 TiDB Operator
+ - 参考[在标准 Kubernetes 上部署 TiDB 集群](deploy-on-general-kubernetes.md) 部署 TiDB 集群
+
+## 创建 Kubernetes 集群
+
+本节介绍了两种创建简单 Kubernetes 集群的方法,可用于测试在 TiDB Operator 下运行的 TiDB 集群。选择最适合你的环境的方案。
+
+- [使用 kind](#使用-kind-创建-kubernetes-集群) (在 Docker 中运行 Kubernetes)
+- [使用 minikube](#使用-minikube-创建-kubernetes-集群) (在虚拟机中运行 Kubernetes)
+
+你也可以使用 Google Cloud Shell 在 Google Cloud Platform 的 Google Kubernetes Engine 中部署 Kubernetes 集群,并遵循教程来部署 TiDB Operator 和 TiDB 集群:
+
+- [打开 Google Cloud Shell](https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https://github.com/pingcap/docs-tidb-operator&cloudshell_tutorial=zh/deploy-tidb-from-kubernetes-gke.md)
+
+### 使用 kind 创建 Kubernetes 集群
+
+本节介绍如何使用 kind 部署 Kubernetes 集群。
+
+[kind](https://kind.sigs.k8s.io/) 是用于使用 Docker 容器作为集群节点运行本地 Kubernetes 集群的工具。它是为测试本地 Kubernetes 集群而开发的。Kubernetes 集群版本取决于 kind 使用的节点镜像,你可以指定要用于节点的镜像并选择任何发布的版本。请参阅 [Docker hub](https://hub.docker.com/r/kindest/node/tags) 以查看可用 tags。默认使用当前 kind 支持的最新版本。
+
+> **警告:**
+>
+> 仅用于测试目的。**不要**直接用于生产环境。
+
+部署前,请确保满足以下要求:
+
+- [docker](https://docs.docker.com/install/):版本 >= 17.03
+- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl):版本 >= 1.12
+- [kind](https://kind.sigs.k8s.io/):版本 >= 0.8.0
+- 若使用 Linux, [net.ipv4.ip_forward](https://linuxconfig.org/how-to-turn-on-off-ip-forwarding-in-linux) 需要被设置为 `1`
+
+以下以 0.8.1 版本为例:
+
+{{< copyable "shell-regular" >}}
+
+```shell
+kind create cluster
+```
+
+期望输出:
+
+```
+Creating cluster "kind" ...
+ ✓ Ensuring node image (kindest/node:v1.18.2) 🖼
+ ✓ Preparing nodes 📦
+ ✓ Writing configuration 📜
+ ✓ Starting control-plane 🕹️
+ ✓ Installing CNI 🔌
+ ✓ Installing StorageClass 💾
+Set kubectl context to "kind-kind"
+You can now use your cluster with:
+
+kubectl cluster-info --context kind-kind
+
+Thanks for using kind! 😊
+```
+
+检查集群是否创建成功:
+
+{{< copyable "shell-regular" >}}
+
+```shell
+kubectl cluster-info
+```
+
+期望输出:
+
+```
+Kubernetes master is running at https://127.0.0.1:51026
+KubeDNS is running at https://127.0.0.1:51026/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
+
+To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
+```
+
+现在就可以开始[部署 TiDB Operator](#部署-tidb-operator)!
+
+测试完成后,销毁集群,执行下面命令:
+
+{{< copyable "shell-regular" >}}
+
+``` shell
+kind delete cluster
+```
+
+### 使用 minikube 创建 Kubernetes 集群
+
+本节介绍如何使用 minikube 部署 Kubernetes 集群。
+
+[Minikube](https://kubernetes.io/docs/setup/minikube/) 可以在虚拟机中创建一个 Kubernetes 集群,可在 macOS, Linux 和 Windows 上运行。
+
+> **警告:**
+>
+> 仅用于测试目的。**不要**直接用于生产环境。
+
+部署前,请确保满足以下要求:
+
+- [Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/):版本 1.0.0+
+ - Minikube 需要安装一个兼容的 hypervisor,详情见官方安装教程。
+- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl): 版本 >= 1.12
+
+> **注意:**
+>
+> - 尽管 Minikube 支持通过 `--vm-driver=none` 选项使用主机 Docker 而不使用虚拟机,但是目前尚没有针对 TiDB Operator 做过全面的测试,可能会无法正常工作。如果你想在不支持虚拟化的系统(例如,VPS)上试用 TiDB Operator,可以考虑使用 [kind](get-started.md#使用-kind-创建-kubernetes-集群)。
+
+安装完 Minikube 后,可以执行下面命令启动一个 Kubernetes 集群:
+
+{{< copyable "shell-regular" >}}
+
+```shell
+minikube start
+```
+
+一切运行正常,会看到类似下面的输出。根据操作系统和使用的 hypervisor 会有些许差异。
+
+```
+😄 minikube v1.10.1 on Darwin 10.15.4
+✨ Automatically selected the hyperkit driver. Other choices: docker, vmwarefusion
+💾 Downloading driver docker-machine-driver-hyperkit:
+ > docker-machine-driver-hyperkit.sha256: 65 B / 65 B [---] 100.00% ? p/s 0s
+ > docker-machine-driver-hyperkit: 10.90 MiB / 10.90 MiB 100.00% 1.76 MiB p
+🔑 The 'hyperkit' driver requires elevated permissions. The following commands will be executed:
+
+ $ sudo chown root:wheel /Users/user/.minikube/bin/docker-machine-driver-hyperkit
+ $ sudo chmod u+s /Users/user/.minikube/bin/docker-machine-driver-hyperkit
+
+
+💿 Downloading VM boot image ...
+ > minikube-v1.10.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s
+ > minikube-v1.10.0.iso: 174.99 MiB / 174.99 MiB [] 100.00% 6.63 MiB p/s 27s
+👍 Starting control plane node minikube in cluster minikube
+💾 Downloading Kubernetes v1.18.2 preload ...
+ > preloaded-images-k8s-v3-v1.18.2-docker-overlay2-amd64.tar.lz4: 525.43 MiB
+🔥 Creating hyperkit VM (CPUs=2, Memory=4000MB, Disk=20000MB) ...
+🐳 Preparing Kubernetes v1.18.2 on Docker 19.03.8 ...
+🔎 Verifying Kubernetes components...
+🌟 Enabled addons: default-storageclass, storage-provisioner
+🏄 Done! kubectl is now configured to use "minikube"
+```
+
+对于中国大陆用户,可以使用国内 gcr.io mirror 仓库,例如 `registry.cn-hangzhou.aliyuncs.com/google_containers`。
+
+{{< copyable "shell-regular" >}}
+
+``` shell
+minikube start --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
+```
+
+或者给 Docker 配置 HTTP/HTTPS 代理。
+
+将下面命令中的 `127.0.0.1:1086` 替换为你自己的 HTTP/HTTPS 代理地址:
+
+{{< copyable "shell-regular" >}}
+
+``` shell
+minikube start --docker-env https_proxy=http://127.0.0.1:1086 \
+ --docker-env http_proxy=http://127.0.0.1:1086
+```
+
+> **注意:**
+>
+> 由于 Minikube(默认)通过虚拟机运行,`127.0.0.1` 是虚拟机本身,因此,有些情况下可能需要将其修改为你的主机的实际 IP。
+
+参考 [Minikube setup](https://kubernetes.io/docs/setup/minikube/) 查看配置虚拟机和 Kubernetes 集群的更多选项。
+
+执行以下命令检查集群状态,并确保可以通过 `kubectl` 访问集群:
+
+{{< copyable "shell-regular" >}}
+
+```
+kubectl cluster-info
+```
+
+期望输出:
+
+```
+Kubernetes master is running at https://192.168.64.2:8443
+KubeDNS is running at https://192.168.64.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
+
+To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
+```
+
+现在就可以开始[部署 TiDB Operator](#部署-tidb-operator)!
+
+测试完成后,销毁集群,执行下面命令:
+
+{{< copyable "shell-regular" >}}
+
+``` shell
+minikube delete
+```
+
+## 部署 TiDB Operator
+
+开始之前,确保以下要求已满足:
+
+- 可以使用 `kubectl` 访问的 Kubernetes 集群
+- [Helm](https://helm.sh/docs/intro/install/): Helm 2 (>= Helm 2.16.5) 或者最新的 Helm 3 稳定版
+
+1. 安装 TiDB Operator CRDs
+
+ TiDB Operator 包含许多实现 TiDB 集群不同组件的自定义资源类型 (CRD)。执行以下命令安装 CRD 到集群中:
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.1.2/manifests/crd.yaml
+ ```
+
+ 期望输出:
+
+ ```
+ customresourcedefinition.apiextensions.k8s.io/tidbclusters.pingcap.com created
+ customresourcedefinition.apiextensions.k8s.io/backups.pingcap.com created
+ customresourcedefinition.apiextensions.k8s.io/restores.pingcap.com created
+ customresourcedefinition.apiextensions.k8s.io/backupschedules.pingcap.com created
+ customresourcedefinition.apiextensions.k8s.io/tidbmonitors.pingcap.com created
+ customresourcedefinition.apiextensions.k8s.io/tidbinitializers.pingcap.com created
+ customresourcedefinition.apiextensions.k8s.io/tidbclusterautoscalers.pingcap.com created
+ ```
+
+2. 安装 TiDB Operator
+
+ TiDB Operator 使用 helm 安装,使用用法略有不同,取决于 Helm 版本是 2 还是 3 。可使用 `helm version --short` 命令查看安装的版本:
+
+ 1. 如果使用的是 Helm 2,你需要安装服务端组件 tiller 。若使用 Helm 3 可跳过此步。
+
+ 应用 tiller 组件 RBAC 规则并安装 tiller 。
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/manifests/tiller-rbac.yaml && \
+ helm init --service-account=tiller --upgrade
+ ```
+
+ 执行以下命令,检查并确认 tiller 的 Pod 是否运行起来:
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ kubectl get po -n kube-system -l name=tiller
+ ```
+
+ 期望输出:
+
+ ```
+ NAME READY STATUS RESTARTS AGE
+ tiller-deploy-b7b9488b5-j6m6p 1/1 Running 0 18s
+ ```
+
+ 当 Ready 栏显示 `1/1` 时表明已经运行起来,可进入下一步操作。
+
+ 2. 添加 PingCAP 仓库
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ helm repo add pingcap https://charts.pingcap.org/
+ ```
+
+ 期望输出:
+
+ ```
+ "pingcap" has been added to your repositories
+ ```
+
+ 3. 为 TiDB Operator 创建一个命名空间
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ kubectl create namespace tidb-admin
+ ```
+
+ 期望输出:
+
+ ```
+ namespace/tidb-admin created
+ ```
+
+ 4. 安装 TiDB Operator
+
+ `helm install` 语法在 Helm 2 和 Helm 3 下略有不同。
+
+ - Helm 2:
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ helm install --namespace tidb-admin --name tidb-operator pingcap/tidb-operator --version v1.1.2
+ ```
+
+ 如果访问 Docker Hub 网速较慢,可以使用阿里云上的镜像:
+
+ {{< copyable "shell-regular" >}}
+
+ ```
+ helm install --namespace tidb-admin --name tidb-operator pingcap/tidb-operator --version v1.1.2 \
+ --set operatorImage=registry.cn-beijing.aliyuncs.com/tidb/tidb-operator:v1.1.2 \
+ --set tidbBackupManagerImage=registry.cn-beijing.aliyuncs.com/tidb/tidb-backup-manager:v1.1.2 \
+ --set scheduler.kubeSchedulerImageName=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler
+ ```
+
+ 期望输出:
+
+ ```
+ NAME: tidb-operator
+ LAST DEPLOYED: Thu May 28 15:17:38 2020
+ NAMESPACE: tidb-admin
+ STATUS: DEPLOYED
+
+ RESOURCES:
+ ==> v1/ConfigMap
+ NAME DATA AGE
+ tidb-scheduler-policy 1 0s
+
+ ==> v1/Deployment
+ NAME READY UP-TO-DATE AVAILABLE AGE
+ tidb-controller-manager 0/1 1 0 0s
+ tidb-scheduler 0/1 1 0 0s
+
+ ==> v1/Pod(related)
+ NAME READY STATUS RESTARTS AGE
+ tidb-controller-manager-6d8d5c6d64-b8lv4 0/1 ContainerCreating 0 0s
+ tidb-controller-manager-6d8d5c6d64-b8lv4 0/1 ContainerCreating 0 0s
+
+ ==> v1/ServiceAccount
+ NAME SECRETS AGE
+ tidb-controller-manager 1 0s
+ tidb-scheduler 1 0s
+
+ ==> v1beta1/ClusterRole
+ NAME CREATED AT
+ tidb-operator:tidb-controller-manager 2020-05-28T22:17:38Z
+ tidb-operator:tidb-scheduler 2020-05-28T22:17:38Z
+
+ ==> v1beta1/ClusterRoleBinding
+ NAME ROLE AGE
+ tidb-operator:kube-scheduler ClusterRole/system:kube-scheduler 0s
+ tidb-operator:tidb-controller-manager ClusterRole/tidb-operator:tidb-controller-manager 0s
+ tidb-operator:tidb-scheduler ClusterRole/tidb-operator:tidb-scheduler 0s
+ tidb-operator:volume-scheduler ClusterRole/system:volume-scheduler 0s
+
+
+ NOTES:
+ Make sure tidb-operator components are running:
+
+ kubectl get pods --namespace tidb-admin -l app.kubernetes.io/instance=tidb-operator
+ ```
+
+ - Helm 3:
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ helm install --namespace tidb-admin tidb-operator pingcap/tidb-operator --version v1.1.2
+ ```
+
+ 如果访问 Docker Hub 网速较慢,可以使用阿里云上的镜像:
+
+ {{< copyable "shell-regular" >}}
+
+ ```
+ helm install --namespace tidb-admin tidb-operator pingcap/tidb-operator --version v1.1.2 \
+ --set operatorImage=registry.cn-beijing.aliyuncs.com/tidb/tidb-operator:v1.1.2 \
+ --set tidbBackupManagerImage=registry.cn-beijing.aliyuncs.com/tidb/tidb-backup-manager:v1.1.2 \
+ --set scheduler.kubeSchedulerImageName=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler
+ ```
+
+ 期望输出:
+
+ ```
+ NAME: tidb-operator
+ LAST DEPLOYED: Mon Jun 1 12:31:43 2020
+ NAMESPACE: tidb-admin
+ STATUS: deployed
+ REVISION: 1
+ TEST SUITE: None
+ NOTES:
+ Make sure tidb-operator components are running:
+
+ kubectl get pods --namespace tidb-admin -l app.kubernetes.io/instance=tidb-operator
+ ```
+
+ 使用以下命令检查 TiDB Operator 组件是否运行起来:
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ kubectl get pods --namespace tidb-admin -l app.kubernetes.io/instance=tidb-operator
+ ```
+
+ 期望输出:
+
+ ```
+ NAME READY STATUS RESTARTS AGE
+ tidb-controller-manager-6d8d5c6d64-b8lv4 1/1 Running 0 2m22s
+ tidb-scheduler-644d59b46f-4f6sb 2/2 Running 0 2m22s
+ ```
+
+ 当所有的 pods 都处于 Running 状态时,可进行下一步操作。
+
+## 部署 TiDB 集群
+
+1. 部署 TiDB 集群
+
+ {{< copyable "shell-regular" >}}
+
+ ``` shell
+ kubectl create namespace tidb-cluster && \
+ curl -LO https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/tidb-cluster.yaml && \
+ kubectl -n tidb-cluster apply -f tidb-cluster.yaml
+ ```
+
+ 如果访问 Docker Hub 网速较慢,可以使用阿里云上的镜像:
+
+ {{< copyable "shell-regular" >}}
+
+ ```
+ kubectl create namespace tidb-cluster && \
+ curl -LO https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic-cn/tidb-cluster.yaml && \
+ kubectl -n tidb-cluster apply -f tidb-cluster.yaml
+ ```
+
+ 期望输出:
+
+ ```
+ namespace/tidb-cluster created
+ tidbcluster.pingcap.com/basic created
+ ```
+
+2. 部署 TiDB 集群监控
+
+ {{< copyable "shell-regular" >}}
+
+ ``` shell
+ curl -LO https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/tidb-monitor.yaml && \
+ kubectl -n tidb-cluster apply -f tidb-monitor.yaml
+ ```
+
+ 如果访问 Docker Hub 网速较慢,可以使用阿里云上的镜像:
+
+ {{< copyable "shell-regular" >}}
+
+ ```
+ curl -LO https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic-cn/tidb-monitor.yaml && \
+ kubectl -n tidb-cluster apply -f tidb-monitor.yaml
+ ```
+
+ 期望输出:
+
+ ```
+ tidbmonitor.pingcap.com/basic created
+ ```
+
+3. 查看 Pod 状态
+
+ {{< copyable "shell-regular" >}}
+
+ ``` shell
+ watch kubectl get po -n tidb-cluster
+ ```
+
+ 期望输出:
+
+ ```
+ NAME READY STATUS RESTARTS AGE
+ basic-discovery-6bb656bfd-kjkxw 1/1 Running 0 29s
+ basic-monitor-5fc8589c89-2mwx5 0/3 PodInitializing 0 20s
+ basic-pd-0 1/1 Running 0 29s
+ ```
+
+ 等待所有组件 pods 都启动,看到每种类型(`-pd`,`-tikv` 和 `-tidb`)都处于 Running 状态时,您可以按 Ctrl-C 返回命令行,然后进行下一步:[连接到 TiDB 集群](#连接-tidb)。
+
+ 期望输出:
+
+ ```
+ NAME READY STATUS RESTARTS AGE
+ basic-discovery-6bb656bfd-xl5pb 1/1 Running 0 9m9s
+ basic-monitor-5fc8589c89-gvgjj 3/3 Running 0 8m58s
+ basic-pd-0 1/1 Running 0 9m8s
+ basic-tidb-0 2/2 Running 0 7m14s
+ basic-tikv-0 1/1 Running 0 8m13s
+ ```
+
+## 连接 TiDB
+
+1. 安装 `mysql` 命令行工具
+
+ 要连接到 TiDB,您需要在使用 `kubectl` 的主机上安装与 MySQL 兼容的命令行客户端。可以安装 MySQL Server,MariaDB Server,Percona Server 的 mysql 可执行文件,也可以从操作系统软件仓库中安装。
+
+ > **注意:**
+ >
+ > + 当使用 MySQL Client 8.0 时,如果用户账户有配置密码,必须显示指定 `--default-auth=mysql_native_password` 参数,因为 `mysql_native_password` [不再是默认的插件](https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password)。
+
+2. 转发 4000 端口
+
+ 首先,将端口从本地主机转发到 Kubernetes 中的 TiDB **Servcie**。 我们先获取 tidb-cluster 命名空间中的服务列表:
+
+ {{< copyable "shell-regular" >}}
+
+ ``` shell
+ kubectl get svc -n tidb-cluster
+ ```
+
+ 期望输出:
+
+ ```
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+ basic-discovery ClusterIP 10.101.69.5 10261/TCP 10m
+ basic-grafana ClusterIP 10.106.41.250 3000/TCP 10m
+ basic-monitor-reloader ClusterIP 10.99.157.225 9089/TCP 10m
+ basic-pd ClusterIP 10.104.43.232 2379/TCP 10m
+ basic-pd-peer ClusterIP None 2380/TCP 10m
+ basic-prometheus ClusterIP 10.106.177.227 9090/TCP 10m
+ basic-tidb ClusterIP 10.99.24.91 4000/TCP,10080/TCP 8m40s
+ basic-tidb-peer ClusterIP None 10080/TCP 8m40s
+ basic-tikv-peer ClusterIP None 20160/TCP 9m39s
+ ```
+
+ 这个例子中,TiDB **Service** 是 **basic-tidb** 。使用以下命令转发本地端口到集群:
+
+ {{< copyable "shell-regular" >}}
+
+ ``` shell
+ kubectl port-forward -n tidb-cluster svc/basic-tidb 4000 > pf4000.out &
+ ```
+
+ 命令会运行在后台,并将输出转发到文件 `pf4000.out` 。所以我们可以继续在当前 shell 会话中继续执行命令。
+
+3. 连接 TiDB
+
+ {{< copyable "shell-regular" >}}
+
+ ``` shell
+ mysql -h 127.0.0.1 -P 4000 -u root
+ ```
+
+ 期望输出:
+
+ ```
+ Welcome to the MySQL monitor. Commands end with ; or \g.
+ Your MySQL connection id is 76
+ Server version: 5.7.25-TiDB-v4.0.0 MySQL Community Server (Apache License 2.0)
+
+ Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
+
+ Oracle is a registered trademark of Oracle Corporation and/or its
+ affiliates. Other names may be trademarks of their respective
+ owners.
+
+ Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
+
+ mysql>
+ ```
+
+ 以下是一些可以用来验证集群功能的命令:
+
+ ```
+ mysql> create table hello_world (id int unsigned not null auto_increment primary key, v varchar(32));
+ Query OK, 0 rows affected (0.17 sec)
+
+ mysql> select * from information_schema.tikv_region_status where db_name=database() and table_name='hello_world'\G
+ *************************** 1. row ***************************
+ REGION_ID: 2
+ START_KEY: 7480000000000000FF3700000000000000F8
+ END_KEY:
+ TABLE_ID: 55
+ DB_NAME: test
+ TABLE_NAME: hello_world
+ IS_INDEX: 0
+ INDEX_ID: NULL
+ INDEX_NAME: NULL
+ EPOCH_CONF_VER: 5
+ EPOCH_VERSION: 23
+ WRITTEN_BYTES: 0
+ READ_BYTES: 0
+ APPROXIMATE_SIZE: 1
+ APPROXIMATE_KEYS: 0
+ 1 row in set (0.03 sec)
+ ```
+
+ ```
+ mysql> select tidb_version()\G
+ *************************** 1. row ***************************
+ tidb_version(): Release Version: v4.0.0
+ Edition: Community
+ Git Commit Hash: 689a6b6439ae7835947fcaccf329a3fc303986cb
+ Git Branch: heads/refs/tags/v4.0.0
+ UTC Build Time: 2020-05-28 01:37:40
+ GoVersion: go1.13
+ Race Enabled: false
+ TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
+ Check Table Before Drop: false
+ 1 row in set (0.00 sec)
+ ```
+
+ ```
+ mysql> select * from information_schema.tikv_store_status\G
+ *************************** 1. row ***************************
+ STORE_ID: 4
+ ADDRESS: basic-tikv-0.basic-tikv-peer.tidb-cluster.svc:20160
+ STORE_STATE: 0
+ STORE_STATE_NAME: Up
+ LABEL: null
+ VERSION: 4.0.0
+ CAPACITY: 58.42GiB
+ AVAILABLE: 36.18GiB
+ LEADER_COUNT: 3
+ LEADER_WEIGHT: 1
+ LEADER_SCORE: 3
+ LEADER_SIZE: 3
+ REGION_COUNT: 21
+ REGION_WEIGHT: 1
+ REGION_SCORE: 21
+ REGION_SIZE: 21
+ START_TS: 2020-05-28 22:48:21
+ LAST_HEARTBEAT_TS: 2020-05-28 22:52:01
+ UPTIME: 3m40.598302151s
+ 1 rows in set (0.01 sec)
+ ```
+
+ ```
+ mysql> select * from information_schema.cluster_info\G
+ *************************** 1. row ***************************
+ TYPE: tidb
+ INSTANCE: basic-tidb-0.basic-tidb-peer.tidb-cluster.svc:4000
+ STATUS_ADDRESS: basic-tidb-0.basic-tidb-peer.tidb-cluster.svc:10080
+ VERSION: 5.7.25-TiDB-v4.0.0
+ GIT_HASH: 689a6b6439ae7835947fcaccf329a3fc303986cb
+ START_TIME: 2020-05-28T22:50:11Z
+ UPTIME: 3m21.459090928s
+ *************************** 2. row ***************************
+ TYPE: pd
+ INSTANCE: basic-pd:2379
+ STATUS_ADDRESS: basic-pd:2379
+ VERSION: 4.0.0
+ GIT_HASH: 56d4c3d2237f5bf6fb11a794731ed1d95c8020c2
+ START_TIME: 2020-05-28T22:45:04Z
+ UPTIME: 8m28.459091915s
+ *************************** 3. row ***************************
+ TYPE: tikv
+ INSTANCE: basic-tikv-0.basic-tikv-peer.tidb-cluster.svc:20160
+ STATUS_ADDRESS: 0.0.0.0:20180
+ VERSION: 4.0.0
+ GIT_HASH: 198a2cea01734ce8f46d55a29708f123f9133944
+ START_TIME: 2020-05-28T22:48:21Z
+ UPTIME: 5m11.459102648s
+ 3 rows in set (0.01 sec)
+ ```
+
+4. 载入 Grafana 面板
+
+ 像上面对 TiDB 4000 端口转发一样,可以转发 Grafana 端口,以便本地访问 Grafana 面板。
+
+ {{< copyable "shell-regular" >}}
+
+ ``` shell
+ kubectl port-forward -n tidb-cluster svc/basic-grafana 3000 > pf3000.out &
+ ```
+
+ Grafana 面板可在 kubectl 所运行的主机上通过 访问。注意,如果你是非本机(比如 Docker 容器或远程服务器)上运行 `kubectl port-forward`,将无法在本地浏览器里通过 `localhost:3000` 访问。
+
+ 默认用户名和密码都是 "admin" 。
+
+ 了解更多使用 TiDB Operator 部署 TiDB 集群监控的信息,可以查阅[使用 TidbMonitor 监控 TiDB 集群](monitor-using-tidbmonitor.md)。
+
+## 升级 TiDB 集群
+
+TiDB Operator 还可简化 TiDB 集群的滚动升级。以下示例更新 TiDB 版本到 "nightly" 版本。
+
+Kubernetes 可以直接编辑已部署的资源,或给已部署的资源应用补丁。
+
+`kubectl edit` 在交互式文本编辑器中打开资源,管理员可以在其中进行更改并保存。如果更改有效,它们将被提交到集群。如果更改无效,它们将会被拒绝并显示一条错误消息。请注意,目前尚不对所有字段进行验证。保存某些更改后,即使更改被接受也不一定会对集群生效。
+
+`kubectl patch` 可直接应用补丁。Kubernetes 支持几种不同的补丁策略,每种策略有不同的功能、格式等。可参考 [Kubernetes Patch](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/update-api-object-kubectl-patch/) 了解更多细节。
+
+1. 修改 TiDB 集群版本
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ kubectl patch tc basic -n tidb-cluster --type merge -p '{"spec": {"version": "release-4.0-nightly"} }'
+ ```
+
+ 期望输出:
+
+ ```
+ tidbcluster.pingcap.com/basic patched
+ ```
+
+2. 等待所有 pods 重启
+
+ 执行此命令以了解集群升级组件时的进度。你可以看到某些 pods 进入 Terminating 状态后,又回到 ContainerCreating,最后重新进入 Running 状态。
+
+ {{< copyable "shell-regular" >}}
+
+ ```
+ watch kubectl get po -n tidb-cluster
+ ```
+
+ 期望输出:
+
+ ```
+ NAME READY STATUS RESTARTS AGE
+ basic-discovery-6bb656bfd-7lbhx 1/1 Running 0 24m
+ basic-pd-0 1/1 Terminating 0 5m31s
+ basic-tidb-0 2/2 Running 0 2m19s
+ basic-tikv-0 1/1 Running 0 4m13s
+ ```
+
+3. 转发端口
+
+ 当所有 pods 都重启后,将看到版本号已更改。现在可以重新运行 `kubeclt port-forward` 命令进行端口转发,以便访问集群中 TiDB 集群。
+
+ {{< copyable "shell-regular" >}}
+
+ ```
+ kubectl port-forward -n tidb-cluster svc/basic-tidb 4000 > pf4000.out &
+ ```
+
+4. 访问并检查集群版本
+
+ {{< copyable "shell-regular" >}}
+
+ ```
+ mysql -h 127.0.0.1 -P 4000 -u root -e 'select tidb_version()\G'
+ ```
+
+ 期望输出:
+
+ > **注意:**
+ > `release-4.0-nightly` 不是固定版本,不同时间会有不同结果
+
+ ```
+ *************************** 1. row ***************************
+ tidb_version(): Release Version: v4.0.0-6-gdec49a126
+ Edition: Community
+ Git Commit Hash: dec49a12654c4f09f6fedfd2a0fb0154fc095449
+ Git Branch: release-4.0
+ UTC Build Time: 2020-06-01 10:07:32
+ GoVersion: go1.13
+ Race Enabled: false
+ TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
+ Check Table Before Drop: false
+ ```
+
+## 销毁 TiDB 集群
+
+完成测试后,您可能希望销毁 TiDB 集群:
+
+销毁 Kubernetes 集群取决于 Kubernetes 集群的创建方式。可参考前面 Kubernetes 创建文档部分。以下是销毁 TiDB 集群方式,不会影响 Kubernetes 集群本身。
+
+1. 删除 TiDB Cluster
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ kubectl delete tc basic -n tidb-cluster
+ ```
+
+2. 删除 TiDB Monitor
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ kubectl delete tidbmonitor basic -n tidb-cluster
+ ```
+
+3. 删除 PV 数据
+
+ 如果您的部署具有持久性数据存储,则删除 TiDB 群集将不会删除群集的数据。 如果不再需要数据,可以运行以下命令来清理数据:
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ kubectl delete pvc -n tidb-cluster -l app.kubernetes.io/instance=basic,app.kubernetes.io/managed-by=tidb-operator && \
+ kubectl get pv -l app.kubernetes.io/namespace=tidb-cluster,app.kubernetes.io/managed-by=tidb-operator,app.kubernetes.io/instance=basic -o name | xargs -I {} kubectl patch {} -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}'
+ ```
+
+4. 删除命名空间
+
+ 为确保没有残余资源,您可以删除用于 TiDB 集群的命名空间。
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ kubectl delete namespace tidb-cluster
+ ```
+
+5. 停止 `kubectl` 的端口转发
+
+ 如果您仍在运行正在转发端口的 `kubectl` 进程,请终止它们:
+
+ {{< copyable "shell-regular" >}}
+
+ ```shell
+ pgrep -lfa kubectl
+ ```
+
+查看更多相关信息,可以查阅[销毁 TiDB 集群](#销毁-tidb-集群)。
diff --git a/zh/tidb-operator-overview.md b/zh/tidb-operator-overview.md
index d223d366bb..afd0d8b30b 100644
--- a/zh/tidb-operator-overview.md
+++ b/zh/tidb-operator-overview.md
@@ -26,9 +26,9 @@ TiDB Operator 提供了多种方式来部署 Kubernetes 上的 TiDB 集群:
+ 测试环境:
- - [kind](deploy-tidb-from-kubernetes-kind.md):采用 [kind](https://kind.sigs.k8s.io/) 方式在本地 Kubernetes 集群上部署 TiDB 集群;
- - [Minikube](deploy-tidb-from-kubernetes-minikube.md):使用 TiDB Operator 在本地 Minikube 环境部署 TiDB 集群;
- - [GKE](deploy-tidb-from-kubernetes-gke.md):使用 TiDB Operator 在 GKE 上部署 TiDB 集群。
+ - [kind](get-started.md#使用-kind-创建-kubernetes-集群)
+ - [Minikube](get-started.md#使用-minikube-创建-kubernetes-集群)
+ - [Google Cloud Shell](https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https://github.com/pingcap/docs-tidb-operator&cloudshell_tutorial=zh/deploy-tidb-from-kubernetes-gke.md)
+ 生产环境: