TiDB Operator是PingCap公司开发的一款在Kubernetes平台上部署和管理TiDB集群的开源软件。使用它可以把TiDB集群自动化部署到k8s集群,这使得TiDB分布式数据库成为一款"云原生(cloud-native)"数据库,用户能够在自己的容器云上部署TiDB数据库。TiDB Operator的主要特性:
TiDB Operator 允许TiDB在云环境下水平扩展.
优雅地执行滚动升级,做到TiDB集群零停机。
多个用户能够在一个k8s集群上简单地部署和管理多个TiDB集群。
当节点发生故障时,TiDB Operator能够自动执行TiDB集群的故障转移处理。注:目前版本还不支持,在将来版本实现。
通过对Kubernetes包管理器Helm的支持,用户能够简单地"一键部署"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