暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在K8S上初始化TiDB 集群并访问

IT那活儿 2021-04-23
1043

一. 初始化TIDB集群

1.创建secret类型账号
1)执行tidb数据库root密码

     echo -n ‘oracle’ |base64

2)配置tidb-secret.yaml


apiVersion: v1kind: Secretmetadata:  namespace: tidb-cluster  name: tidb-secrettype: Opaquedata:  root:4oCYb3JhY2xl4oCZ

3)应用tidb-secret.yaml并查看


kubectl apply -f tidb-secret.yaml -n tidb-clusterkubectlget secret -n tidb-cluster

可以看到tidb-secret已创建

2.初始化TIDB数据库

1)创建初始化tidb-init.yaml

---apiVersion: pingcap.com/v1alpha1kind: TidbInitializermetadata:  name: tidb-init  namespace:tidb-clusterspec:  image:tnir/mysqlclient  #imagePullPolicy:IfNotPresent  cluster:    namespace:tidb-cluster    name:detailed-tidb  initSql: |-    create database app;  passwordSecret: tidb-secret

2)下载镜像并上传至内网应用


docker pull tnir/mysqlclient:latestdocker save -o mysqlclient-latest.tar tnir/mysqlclient:latestdocker load -i mysqlclient-latest.tar

3) 应用yaml并查看


kubectl apply -f tidb-init.yamlkubectl get pods -n tidb-cluster

初始完后,pod状态会变成Completed

二. 访问TIDB数据库

访问

1) 查看对外暴露端口

kubectl get svc  -n tidb-cluster 

2) 使用mysql客户端进行访问,密码为tidb-secret.yaml创建的密码

mysql -uroot -p -h10.96.200.242 -P4000

可以看到通过初始化创建app库正常存在.至此K8S+TIDB搭建完成

三. 踩坑点

tidb-cluster.yaml默认参数无法完成初始化

现象:

使用tidb-cluster.yaml中默认使用的tidb参数,初始化时,docker下查看pod报错如下:

info: failedto connectto detailed-tidb:4000,sleep 1 second then retryinfo: failedto connectto detailed-tidb:4000,sleep 1 second then retryinfo: failedto connectto detailed-tidb:4000,sleep 1 second then retry

kubectl查看pod日志,报错如下:

Errorfrom server (BadRequest): container “mysql-client” in pod “k8s-staging-local-pv-tidb-initializer-6p8gg”is waitingto start: PodInitializing

而K8S用describe查看的日志,完全不显示报错,一直处于Init:0/1状态:

Events:Type Reason Age From MessageNormal Scheduled48s default-scheduler Successfully assigned k8s-staging-local-pv/k8s-staging-local-pv-tidb-initializer-6p8gg to node-101359-dskbper6.kscnNormal Pulled47s kubelet Container image “tnir/mysqlclient” already present on machineNormal Created47s kubelet Created container waitNormal Started47s kubelet Started container wait

解决:

在tidb-cluster.yaml中,tidb.service设置ClusterIP、Nodeport或者Load Balancer,再重新初始化,则正常。

相关阅读

Centos8下 K8S 安装配置Mysql8 多主MGR

Centos8安装在线及离线K8S集群搭建

Centos8下K8S master节点更换IP

Tidb慢查询定位分析

Tidb日常运维操作

TiDB扩容与缩容

END

更多精彩干货分享

点击下方名片关注

IT那活儿

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论