k8s上的 部署TiDB 集群

k8s上的 部署TiDB 集群

一、k8s环境准备

二、k8s上部署TiDB

2.1、部署StorageClass-nfs方案

  • sc种类很多,模拟的话此处就有较为简单的nfs类型的sc
# nfs部署方案
https://www.cnblogs.com/hsyw/p/13610960.html

# nfs类型的sc部署方案
https://github.com/tzh666/k8s-infra/tree/main/StorageClass/NFS

2.2、SC

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: tidb-sc
provisioner: fuseim.pri/ifs
parameters:
  archiveOnDelete: "false"   # 设置为"false"时删除PVC不会保留数据,"true"则保留数据

2.3、部署helm

Kubernetes 应用在 Helm 中被打包为 chart。PingCAP 针对 Kubernetes 上的 TiDB 部署运维提供了多个 Helm chart:

  • tidb-operator:用于部署 TiDB Operator;
  • tidb-cluster:用于部署 TiDB 集群;
  • tidb-backup:用于 TiDB 集群备份恢复;
  • tidb-lightning:用于 TiDB 集群导入数据;
  • tidb-drainer:用于部署 TiDB Drainer;
  • tikv-importer:用于部署 TiKV Importer;
# 1、下载
[root@k8s-master01 ~]# wget https://get.helm.sh/helm-v3.4.2-linux-amd64.tar.gz

# 2、安装
[root@k8s-master01 ~]# tar -zxvf helm-v3.4.2-linux-amd64.tar.gz 
[root@k8s-master01 ~]# mv linux-amd64/helm /usr/local/bin/helm

# 3、使用添加helmPingCAP的提供的 chart
helm repo add pingcap https://charts.pingcap.org/

# 4、查看是否添加成功
[root@k8s-master01 infra]# helm repo list
NAME            URL                                       
pingcap         https://charts.pingcap.org/

# 5、添加完成后,可以使用 helm search 搜索 PingCAP 提供的 chart:
[root@k8s-master01 infra]# helm search repo pingcap
NAME                    CHART VERSION   APP VERSION     DESCRIPTION                            
pingcap/diag            v1.1.0          v1.1.0          clinic diag Helm chart for Kubernetes  
pingcap/tidb-backup     v1.3.9                          A Helm chart for TiDB Backup or Restore
pingcap/tidb-cluster    v1.3.9                          A Helm chart for TiDB Cluster          
pingcap/tidb-drainer    v1.3.9                          A Helm chart for TiDB Binlog drainer.  
pingcap/tidb-lightning  v1.3.9                          A Helm chart for TiDB Lightning        
pingcap/tidb-operator   v1.3.9          v1.3.9          tidb-operator Helm chart for Kubernetes
pingcap/tikv-importer   v1.3.9                          A Helm chart for TiKV Importer         
pingcap/tikv-operator   v0.1.0          v0.1.0          A Helm chart for Kubernetes           

2.4、部署TiDB Operator

  • 注意
    • 对于 Kubernetes 1.16 之前的版本,Kubernetes 仅支持 v1beta1 版本的 CRD,你需要将上述命令中的 crd.yaml 修改为 crd_v1beta1.yaml
# 1、下载配置文件
wget https://raw.githubusercontent.com/pingcap/tidb-operator/v1.3.9/manifests/crd.yaml
[root@k8s-master01 tidb]# kubectl create -f ./crd.yaml
customresourcedefinition.apiextensions.k8s.io/backupschedules.pingcap.com created
customresourcedefinition.apiextensions.k8s.io/backups.pingcap.com created
customresourcedefinition.apiextensions.k8s.io/dmclusters.pingcap.com created
customresourcedefinition.apiextensions.k8s.io/restores.pingcap.com created
customresourcedefinition.apiextensions.k8s.io/tidbclusterautoscalers.pingcap.com created
customresourcedefinition.apiextensions.k8s.io/tidbclusters.pingcap.com created
customresourcedefinition.apiextensions.k8s.io/tidbinitializers.pingcap.com created
customresourcedefinition.apiextensions.k8s.io/tidbmonitors.pingcap.com created
customresourcedefinition.apiextensions.k8s.io/tidbngmonitorings.pingcap.com created

# 如果显示如下信息表示 CRD 安装成功:
kubectl get crd
NAME                                 CREATED AT
backups.pingcap.com                  2020-06-11T07:59:40Z
backupschedules.pingcap.com          2020-06-11T07:59:41Z
restores.pingcap.com                 2020-06-11T07:59:40Z
tidbclusterautoscalers.pingcap.com   2020-06-11T07:59:42Z
tidbclusters.pingcap.com             2020-06-11T07:59:38Z
tidbinitializers.pingcap.com         2020-06-11T07:59:42Z
tidbmonitors.pingcap.com             2020-06-11T07:59:41Z

# 2、创建命名空间
kubectl create namespace tidb-admin

# 3、安装 TiDB Operator
helm install --namespace tidb-admin tidb-operator pingcap/tidb-operator --version v1.3.9 \
    --set operatorImage=registry.cn-beijing.aliyuncs.com/tidb/tidb-operator:v1.3.9 \
    --set tidbBackupManagerImage=registry.cn-beijing.aliyuncs.com/tidb/tidb-backup-manager:v1.3.9 \
    --set scheduler.kubeSchedulerImageName=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler

NAME: tidb-operator
LAST DEPLOYED: Sat Oct 15 17:11:22 2022
NAMESPACE: tidb-admin
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Make sure tidb-operator components are running:

    kubectl get pods --namespace tidb-admin -l app.kubernetes.io/instance=tidb-operator
# 4、查看部署结果
[root@k8s-master01 tidb]# kubectl get pods --namespace tidb-admin -l app.kubernetes.io/instance=tidb-operator
NAME                                       READY   STATUS    RESTARTS   AGE
tidb-controller-manager-7cf8b6f894-lhqms   1/1     Running   0          4m58s
tidb-scheduler-585fd9f8f-4rm65             2/2     Running   0          4m58s

2.5、安装TiDB集群

  • 需要改StorageClass名字,改成上门自己创建的名字
  • PV 一般由系统管理员或 volume provisioner 自动创建,PV 与 Pod 是通过 PersistentVolumeClaim (PVC) 进行关联的
  • 普通用户在使用 PV 时并不需要直接创建 PV,而是通过 PVC 来申请使用 PV,对应的 volume provisioner 根据 PVC 创建符合要求的 PV,并将 PVC 与该 PV 进行绑定
  • 这玩意不合适在生产上使用,需要修改配置后才能上生产,例如修改调度、存储大小、副本个数等
wget https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/tidb-cluster.yaml

kubectl create namespace tidb-cluster && kubectl apply  -n  tidb-cluster -f tidb-cluster.yaml

# 如果访问 Docker Hub 网速较慢,可以使用 UCloud 上的镜像:
kubectl create namespace tidb-cluster && \
    kubectl -n tidb-cluster apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic-cn/tidb-cluster.yaml

2.6、部署 TiDB 集群监控

# 如果访问 Docker Hub 网速较慢,可以使用 UCloud 上的镜像:
kubectl -n tidb-cluster apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic-cn/tidb-monitor.yaml

2.7、查看 Pod 状态

watch kubectl get po -n tidb-cluster

参考官网:

https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/prerequisites

https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/get-started#%E7%AC%AC-2-%E6%AD%A5%E9%83%A8%E7%BD%B2-tidb-operator

posted @ 2022-10-15 19:06  taotaozh  阅读(866)  评论(0编辑  收藏  举报