课程名称:课程版本(101)+ 2.3.2 Deploy TiDB in Kubernetes(在 Kubernetes 上部署 TiDB 集群)
学习时长:60min
课程收获:了解 Kubernetes 概念,TiDB Operator 原理,如何部署 TiDB 集群
课程内容:
一、Kubernetes
1、什么是Kubernetes?
简称K8s,是能够为我们自动化部署,扩缩容和管理容器化应用的开源系统,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
传统,虚拟化VM,容器化(Cgroups,Namespace,Rootfs)
2、Kubernetes架构
A、Control Plane
Kube-api-server:对外提供整个集群的API,负责所有组件的交互
etcd:高可用,高一致性的Key Value Store
kube-scheduler:用来调度,支持不同算法,根据各种不同的算法选择最合适的节点
kube-controller-manager:实现声明式的部署,根据用户的声明来编排和调度(Node Controller,Deployment Controller,StatefulSet Controller,Service Controller…)
addons:CNI,DNS,Dashboard…
B、Nodes
Kubelet:和各个节点上的Container Runtime交互,完成Container的生命周期管理
Kube-proxy:维护了网络的规则
Container Runtime(docker):真正负责各个节点上容器管理
二、基本概念
1、Pod
是一组Container的集合,在一个Pod里面可以部署一个或多个Container,Container之间共享存储,网络等公共资源
2、Service
为后端Pod提供负载均衡
Service的类型
ClusterIP/NodePort/LoadBalancer/ExternalName
3、PV&PVC
PV:对底层存储的抽象
PVC:一个request
4、Workload
Deployment:用于没有状态的服务,通过Pods和Replications提供声明式的部署
StatefulSets:有状态的,提供ID唯一标识Pod;提供persistent storage 维护和管理PV和PVC;按有序的graceful的 部署和扩缩容;自动化滚动升级
DaemonSet:每个节点都启用示例
Jobs:一次性动作
CronJob:周期性job
5、Controllers
Reconciliation loop(每个控制器的基本逻辑):一直从集群中获取current state,与desired state作比较,如果不一致,就要调整当前集群的状态,去逼近desired stat,直到两者一致为止
不同controller参考官方文档:https://kubernets.io/docs/concepts
三、TiDB Operator
为什么使用?为了使用TiDB部署和管理更简单,更方便,更安全
实现了自动化运维,减轻运维人员维护压力,提高服务能力
1、特点
方便部署
水平扩缩容
滚动升级
多集群的支持
自动的Failover(故障切换)
监控
TiDB Operator实际上通过CRD(Custom Resource Definition)管理TiDB集群
2、架构
3、TiDB Controller Manager
A、工作机制
B、工作过程
需要配置schedulerName:tidb-schduler
C、针对PD
一个节点不能承载多数的replicas
D、针对TiKV
E、针对TiDB
原地调度
四、部署TiDB Operator
五、部署TiDB集群