使用TiDB-Operator在k8s平臺上部署Ti-DB叢集
TiDB Operator是PingCap公司開發的一款在Kubernetes平臺上部署和管理TiDB叢集的開源軟體。使用它可以把TiDB叢集自動化部署到k8s叢集,這使得TiDB分散式資料庫成為一款"雲原生(cloud-native)"資料庫,使用者能夠在自己的容器雲上部署TiDB資料庫。TiDB Operator的主要特性:
- 安全地擴充套件 TiDB cluster
TiDB Operator 允許TiDB在雲環境下水平擴充套件.
- 能夠對TiDB叢集進行滾動升級
優雅地執行滾動升級,做到TiDB叢集零停機。
- 多租戶支援
多個使用者能夠在一個k8s叢集上簡單地部署和管理多個TiDB叢集。
- 自動故障轉移 (Automatic failover)
當節點發生故障時,TiDB Operator能夠自動執行TiDB叢集的故障轉移處理。注:目前版本還不支援,在將來版本實現。
- Kubernetes包管理器支援
通過對Kubernetes包管理器Helm的支援,使用者能夠簡單地"一鍵部署"TiDB叢集((一個命令就可以完成部署)。
- 自動化監控TiDB集
自動化部署TiDB叢集監控元件,包括:Prometheus, Grafana。
在下面的內容裡,將向大家介紹使用kubeadm-dind方式在單機多節點k8s叢集上(1個master、2個worker node),使用TiDB Operator部署TiDB叢集的方法。在另一篇文章中介紹如何在多機多節點k8s叢集中部署的方法。
為了能夠進行部署,需要先有一個k8s環境,請大家參照本人寫的博文,先安裝好(官方文件中給的方法對於國內使用者來講由於google被遮蔽,是不成的),博文地址如下:
https://blog.csdn.net/u011782423/article/details/82346717
1. 下載TiDB-Operator
cd /opt
git clone https://github.com/pingcap/tidb-operator
2. 安裝k8s包管理器Helm
(1) 下載Helm 2.9.1軟體包 ,並解壓
os=`uname -s| tr '[:upper:]' '[:lower:]'`
wget "https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-${os}-amd64.tar.gz"
tar xzf helm-v2.9.1-${os}-amd64.tar.gz
mv ${os}-amd64/helm /usr/local/bin
注意:由於國內網路限制問題,storage.googleapis.com地址可能會不能訪問。可以從我共享的百度網盤下載,然後傳到宿主機上:
https://pan.baidu.com/s/1qI0AgdsgSCCWm-OaX88NVQ
(2) 部署Helm Server (Tiller)
cd /opt/tidb-operator
kubectl apply -f manifests/tiller-rbac.yaml
helm init --service-account=tiller --upgrade --tiller-image=uhub.ucloud.cn/pingcap/tiller:v2.9.1
(3) 檢查Tiller是否已經成功部署到k8s叢集
kubectl get pod -n kube-system | grep tiller # 如果輸出有tiller開頭的pod,表示部署成功。
helm version # 確認Helm server執行
3. 設定local volumes
#在k8s叢集的每個工作節點上建立本地目錄
cd /opt/tidb-operator
./manifests/local-dind/pv-hosts.sh
# 在每個工作節點部署 local volume provisioner
kubectl apply -f manifests/local-dind/local-volume-provisioner.yaml
# 檢視 local volume provisioner是否執行
kubectl get po -n kube-system -l app=local-volume-provisioner
# 檢視被建立好的pvs
kubectl get pv
4. 部署TiDB Operator
#建立 custom resource definitions
kubectl apply -f manifests/crd.yaml
#檢視建立結果
kubectl get customresourcedefinitions
#安裝TiDB Operator到Kubernetes
helm install charts/tidb-operator --name=tidb-operator --namespace=tidb-admin
#檢視 operator 是否執行
kubectl get po -n tidb-admin -l app=tidb-operator
5. 部署TiDB Cluster
# 部署tidb cluster
helm install charts/tidb-cluster --name=tidb-cluster --namespace=tidb
# 檢視tidb cluster元件部署情況
watch kubectl get pods -n tidb -o wide
# 檢視tidb執行的元件pd、tikv、tidb
kubectl get pod -n tidb
6. 使用mysql client訪問部署好的tidb資料庫
#在宿主機上執行
kubectl port-forward svc/demo-tidb 4000:4000 --namespace=tidb
#使用mysql連線到tidb
mysql -h 127.0.0.1 -P 4000 -u root -D test