使用TiDB-Operator在k8s平台上部署Ti-DB集群

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011782423/article/details/82350467

        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

 

 

展开阅读全文

没有更多推荐了,返回首页