【TiDB 4.0 PCTA 学习笔记】- 在 Kubernetes 上部署 TiDB 集群@1班 NULL

Part I:Kubernetes Basics

需要一个系统去统一管理(编排)我的容器

  • 通过声明式的配置去完成各种自动化操作,也提供了自动发现,负载均衡等功能

整体架构

Control Plane

  • kube-apiserver 对外提供整个集群的API
  • etcd 一个高可用的高一致的的 key value store
  • kube-scheduler 用于调度
  • kube-controller-manager 包含了一组controller

Nodes

  • kubelet 类似一个agent起在每个节点上,与container交互完成生命周期管理
  • kube-proxy 维护网络规则
  • Container Runtime 各个节点上管理容器的进程

Kubernetes Concepts

  • Pod 集群调度的最基本单位

    • 一组container的集合
    • 在一个Pod中可以部署一个或多个container
  • Service 为后端的Pod提供负载均衡的功能

    • ClusterIP
    • NodePort
    • LoadBalancer
    • ExternaName
      image
  • PV & PVC
    image

  • Workload

    • Deployment 主要用于无状态的服务
      • 通过Pod和ReplicSets来提供一种声明式的部署方式
    • StatefulSets 主要用于有状态的服务
      • 提供稳定唯一的网络定义
      • 提供稳定持久的存储
      • 提供有序的部署和扩/缩容
      • 有序的自动化的去罗列updates
    • DaemonSet
    • Jobs
    • CronJob
  • Controllers
    image

Part II:TiDB Operator Principles

  • 比较方便的部署
  • 水平扩/缩容
  • 滚动升级
  • 多集群的支持
  • 自动故障转移
  • 监控

Custom Resource Definition(CRD)

TiDB Operator 架构

image

TiDB Controller Manager

image

tidb-controller-manage连续地使期望状态和实际状态产生差异。

如果状态不匹配,controller-manager会触发动作以达到到所需的状态。

工作过程:

image

TiDB Scheduler

需要配置schedulerName为tidb-scheduler

image

PD/TiKV/TiDB都有自己的调度策略

Part III:Deploy TiDB Operator

  • 创建安装CRD
  • 获取tidb-operator的values.yaml
  • 编辑values.yaml
  • 安装tidb-operator
  • 通过 kubectl get po -n tidb-admin来查询pod是否已经running&ready
  • 升级:先升级yaml,再通过这各yaml来升级tidb-operator

Part IV:Deploy TiDB Clusters

  • 配置CRD
  • 配置TiDB集群CR
  • 应用该CR过程:
    • 启动一个TiDB Discovery服务 - 用于PD的动态启动
    • 随机给其中一个PD进行初始化,然后把其他的PD加入集群
      image
  • 为组件分别创建StatefulSet
    image
  • 依据TiDB配置生成config map然后再挂载至Pod中
  • 查看
    • kubectl get service status
  • 访问
    • kebectl port-forward svc/basic-tidb 4000:4000

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。