资讯专栏INFORMATION COLUMN

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

IT那活儿 / 1643人阅读
在K8S上初始化TiDB 集群并访问





一. 初始化TIDB集群





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

     echo -n ‘oracle’ |base64

2)配置tidb-secret.yaml

apiVersion: v1
kind: Secret
metadata:
  namespace: tidb-cluster
  name: tidb-secret
type: Opaque
data:
  root:4oCYb3JhY2xl4oCZ

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

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

kubectlget secret -n tidb-cluster

可以看到tidb-secret已创建



2.初始化TIDB数据库


1)创建初始化tidb-init.yaml
---
apiVersion: pingcap.com/v1alpha1
kind: TidbInitializer
metadata:
  name: tidb-init
  namespace:tidb-cluster
spec:
  image:tnir/mysqlclient
  #imagePullPolicy:IfNotPresent
  cluster:
    namespace:tidb-cluster
    name:detailed-tidb
  initSql: |-
    create database app;
  passwordSecret: tidb-secret


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

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


3) 应用yaml并查看

kubectl apply -f tidb-init.yaml

kubectl 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 retry
info: failedto connectto detailed-tidb:4000,sleep 1 second then retry
info: 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 Message
Normal Scheduled48s default-scheduler Successfully assigned k8s-staging-local-pv/k8s-staging-local-pv-tidb-initializer-6p8gg to node-101359-dskbper6.kscn
Normal Pulled47s kubelet Container image “tnir/mysqlclient” already present on machine
Normal Created47s kubelet Created container wait
Normal 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那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129939.html

相关文章

  • 刘寅:TiDB 工具链和生态

    摘要:本文为今年年初商业产品团队负责人刘寅在上分享的工具链和生态实录内容,详细介绍了的周边工具以及生态系统。大家下午好,我叫刘寅。部署工具就先介绍这么多。首先是,这个小工具在很多生产环境上已经用起来了。它是一个到间的实时同步工具。 本文为今年年初 PingCAP 商业产品团队负责人刘寅在 TiDB DevCon2018 上分享的 《 TiDB 工具链和生态》实录内容,详细介绍了 TiDB 的...

    whjin 评论0 收藏0
  • 干货 | TiDB Operator实践

    摘要:一环境二安装配置免密登录,配置节点所需镜像的文件由于某些镜像国内无法访问需要现将镜像通过代理下载到本地然后上传到本地镜像仓库或,同时修改配置文件,个别组件存放位置,需要新建服务器分发文件。文章转载自公众号北京爷们儿 K8s和TiDB都是目前开源社区中活跃的开源产品,TiDBOperator项目是一个在K8s上编排管理TiDB集群的项目。本文详细记录了部署K8s及install TiDB...

    jhhfft 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<