1. 程式人生 > >使用TiDB-Operator在k8s平臺上部署Ti-DB叢集

使用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