title | summary | category | aliases | |
---|---|---|---|---|
Deploy TiDB Operator in Kubernetes |
Learn how to deploy TiDB Operator in Kubernetes. |
how-to |
|
This document describes how to deploy TiDB Operator in Kubernetes.
Before deploying TiDB Operator, make sure the following items are installed on your machine:
- Kubernetes >= v1.12
- DNS addons
- PersistentVolume
- RBAC enabled (optional)
- Helm version >= 2.11.0 && < 3.0.0 && != 2.16.4
TiDB Operator runs in Kubernetes cluster. You can refer to the document of how to set up Kubernetes to set up a Kubernetes cluster. Make sure that the Kubernetes version is v1.12 or higher. If you want to deploy a very simple Kubernetes cluster for testing purposes, consult the Get Started document.
TiDB Operator uses Persistent Volume to persist the data of TiDB cluster (including the database, monitoring data, and backup data), so the Kubernetes cluster must provide at least one kind of persistent volume. For better performance, it is recommended to use local SSD disk as the volumes. Follow this step to provision local persistent volumes.
It is recommended to enable RBAC in the Kubernetes cluster.
Refer to Use Helm to install Helm and configre it with the official PingCAP chart Repo.
Refer to Local PV Configuration to set up local persistent volumes in your Kubernetes cluster.
TiDB Operator uses Custom Resource Definition (CRD) to extend Kubernetes. Therefore, to use TiDB Operator, you must first create the TidbCluster
custom resource type, which is a one-time job in your Kubernetes cluster.
{{< copyable "shell-regular" >}}
kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.1.0/manifests/crd.yaml
If the server cannot access the Internet, you need to download the crd.yaml
file on a machine with Internet access before installing:
{{< copyable "shell-regular" >}}
wget https://raw.githubusercontent.com/pingcap/tidb-operator/v1.1.0/manifests/crd.yaml
kubectl apply -f ./crd.yaml
If the following message is displayed, the CRD installation is successful:
{{< copyable "shell-regular" >}}
kubectl get crd
NAME CREATED AT
backups.pingcap.com 2020-06-11T07:59:40Z
backupschedules.pingcap.com 2020-06-11T07:59:41Z
restores.pingcap.com 2020-06-11T07:59:40Z
tidbclusterautoscalers.pingcap.com 2020-06-11T07:59:42Z
tidbclusters.pingcap.com 2020-06-11T07:59:38Z
tidbinitializers.pingcap.com 2020-06-11T07:59:42Z
tidbmonitors.pingcap.com 2020-06-11T07:59:41Z
After the various CRDs above are created, you can install TiDB Operator on your Kubernetes cluster. There are two installation methods: online and offline.
-
Get the
values.yaml
file of thetidb-operator
chart you want to install.{{< copyable "shell-regular" >}}
mkdir -p ${HOME}/tidb-operator && \ helm inspect values pingcap/tidb-operator --version=${chart_version} > ${HOME}/tidb-operator/values-tidb-operator.yaml
Note:
${chart_version}
represents the chart version of TiDB Operator. For example,v1.1.0
. You can view the currently supported versions by running thehelm search -l tidb-operator
command. -
Configure TiDB Operator
TiDB Operator will use the
k8s.gcr.io/kube-scheduler
image. If you cannot download the image, you can modify thescheduler.kubeSchedulerImageName
in the${HOME}/tidb-operator/values-tidb-operator.yaml
file toregistry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler
.You can modify other items such as
limits
,requests
, andreplicas
as needed. -
Install TiDB Operator.
{{< copyable "shell-regular" >}}
helm install pingcap/tidb-operator --name=tidb-operator --namespace=tidb-admin --version=${chart_version} -f ${HOME}/tidb-operator/values-tidb-operator.yaml && \ kubectl get po -n tidb-admin -l app.kubernetes.io/name=tidb-operator
-
Upgrade TiDB Operator
If you need to upgrade the TiDB Operator, modify the
${HOME}/tidb-operator/values-tidb-operator.yaml
file, and then execute the following command to upgrade:{{< copyable "shell-regular" >}}
helm upgrade tidb-operator pingcap/tidb-operator -f ${HOME}/tidb-operator/values-tidb-operator.yaml
If your server cannot access the Internet, install TiDB Operator offline by the following steps:
-
Download the
tidb-operator
chartIf the server has no access to the Internet, you cannot configure the Helm repository to install the TiDB Operator component and other applications. At this time, you need to download the chart file needed for cluster installation on a machine with Internet access, and then copy it to the server.
Use the following command to download the
tidb-operator
chart file:{{< copyable "shell-regular" >}}
wget http://charts.pingcap.org/tidb-operator-v1.1.0.tgz
Copy the
tidb-operator-v1.1.0.tgz
file to the target server and extract it to the current directory:{{< copyable "shell-regular" >}}
tar zxvf tidb-operator.v1.1.0.tgz
-
Download the Docker images used by TiDB Operator
If the server has no access to the Internet, you need to download all Docker images used by TiDB Operator on a machine with Internet access and upload them to the server, and then use
docker load
to install the Docker image on the server.The Docker images used by TiDB Operator are:
{{< copyable "shell-regular" >}}
pingcap/tidb-operator:v1.1.0 pingcap/tidb-backup-manager:v1.1.0 bitnami/kubectl:latest pingcap/advanced-statefulset:v0.3.3 k8s.gcr.io/kube-scheduler:v1.16.9
Among them,
k8s.gcr.io/kube-scheduler:v1.16.9
should be consistent with the version of your Kubernetes cluster. You do not need to download it separately.Next, download all these images using the following command:
{{< copyable "shell-regular" >}}
docker pull pingcap/tidb-operator:v1.1.0 docker pull pingcap/tidb-backup-manager:v1.1.0 docker pull bitnami/kubectl:latest docker pull pingcap/advanced-statefulset:v0.3.3 docker save -o tidb-operator-v1.1.0.tar pingcap/tidb-operator:v1.1.0 docker save -o tidb-backup-manager-v1.1.0.tar pingcap/tidb-backup-manager:v1.1.0 docker save -o bitnami-kubectl.tar bitnami/kubectl:latest docker save -o advanced-statefulset-v0.3.3.tar pingcap/advanced-statefulset:v0.3.3
Next, upload these Docker images to the server, and execute
docker load
to install these Docker images on the server:{{< copyable "shell-regular" >}}
docker load -i tidb-operator-v1.1.0.tar docker load -i tidb-backup-manager-v1.1.0.tar docker load -i bitnami-kubectl.tar docker load -i advanced-statefulset-v0.3.3.tar
-
Configure TiDB Operator
TiDB Operator embeds a
kube-scheduler
to implement a custom scheduler. To configure the Docker image's name and version of this built-inkube-scheduler
component, modify the./tidb-operator/values.yaml
file. For example, ifkube-scheduler
in your Kubernetes cluster uses the imagek8s.gcr.io/kube-scheduler:v1.16.9
, set./tidb-operator/values.yaml
as follows:... scheduler: serviceAccount: tidb-scheduler logLevel: 2 replicas: 1 schedulerName: tidb-scheduler resources: limits: cpu: 250m memory: 150Mi requests: cpu: 80m memory: 50Mi kubeSchedulerImageName: k8s.gcr.io/kube-scheduler kubeSchedulerImageTag: v1.16.9 ...
You can modify other items such as
limits
,requests
, andreplicas
as needed. -
Install TiDB Operator
Install TiDB Operator using the following command:
{{< copyable "shell-regular" >}}
helm install ./tidb-operator --name=tidb-operator --namespace=tidb-admin
-
Upgrade TiDB Operator
If you need to upgrade TiDB Operator, modify the
./tidb-operator/values.yaml
file, and then execute the following command to upgrade:{{< copyable "shell-regular" >}}
helm upgrade tidb-operator ./tidb-operator
To customize TiDB Operator, modify /home/tidb/tidb-operator/values-tidb-operator.yaml
. The rest sections of the document use values.yaml
to refer to /home/tidb/tidb-operator/values-tidb-operator.yaml
TiDB Operator contains two components:
- tidb-controller-manager
- tidb-scheduler
These two components are stateless and deployed via Deployment
. You can customize resource limit
, request
, and replicas
in the values.yaml
file.
After modifying values.yaml
, run the following command to apply this modification:
{{< copyable "shell-regular" >}}
helm upgrade tidb-operator pingcap/tidb-operator --version=${chart_version} -f /home/tidb/tidb-operator/values-tidb-operator.yaml