课程名称:
201 2.3.2 Deploy TiDB in Kubernetes(在 Kubernetes 上部署 TiDB 集群)
学习时长:
30min
课程收获:
初步了解 Kubernets,以及 TiDB 在 Kubernets 上的安装部署
课程内容:
1. Kubernetes 基础概念
1. 什么是 Kubernetes?
1. 什么是 Kubernetes?
Kubernetes 是一个自动部署、扩缩容、管理容器化应用的开源系统
传统部署 VS 虚拟化部署 VS 容器部署
容器用到的技术有 Cgroups、Namespace 和 Rootfs,Cgroups 用来做资源分配,Namespace 用来做资源隔离,Rootfs 是容器启动的根目录
2. 为什么需要 Kubernetes?
docker 只能在单机上对容器进行管理,默认不同主机上的容器不能通信,Kubernetes 可以管理集群中的容器(编排)
3. Kubernetes 的优点
- 可移植、可扩展、开源、管理容器化负载和服务
- 配置和自动化
- 服务发现和负载均衡
- 存储编排
- 自动发布及回滚
- 自动打包
- 自我修复
- 加密(Secret)及配置管理(ConfigMap)
- 容器编排系统
2. Kubernetes 架构
Kubernetes 架构分为 Control Plane 和 Node 两部分
其中,Control Plane 中的组件可分为:
- kube-api-server:暴露 Kubernetes API
- etcd:一致性高可用的 kv 存储
- kube-scheduler:调度器,为 pod 选择合适 node 节点运行
- kube-controller-manager:实现用户声明式的部署,包含一组 controller,包括 Node controller,Deployment controller 等
其中,Node 中的组件可分为:
- kubelet:保证容器在 pod 当中运行
- kube-proxy:维护 node 网络规则
- container runtime like docker:负责节点上容器管理
3. Kubernetes 基本概念
1. Pod
Kubernetes 集群调度的基本单位,是一组容器的集合
2. Service
为 Pod 提供负载均衡的功能,Service Type 种类包括:
- NodePort
- LoadBalancer
- ExternalName
- LoadBalancer
3. PV & PVC
PV:对底层存储的抽象
PVC:可以理解为 storage request
4. Workload
- Deployment:无状态服务
- StatefulSets:有状态服务
- DaemonSet:每个节点上都起一个实例
- Jobs:一次性动作
- CronJob:周期性动作
5. Controllers
Controllers 的基本工作原理是通过观察当前状态值,不断把状态逼近为设置的状态值,包括一系列的 Controllers
2. TiDB Operator 原理
1. 为什么需要 TiDB Operator
- 使 TiDB 在 Kubernetes 上的部署更简单、方便和安全
- 需要 TiDB 相关知识进行运维
2. 特征
- 方便部署
- 水平扩缩容
- 滚动更新
- 多租户支持
- 自动故障转移
- 监控
3. 通过 CRD 来描述 TiDB 集群
- 类似面向对象编程里的类和类的实例
4. TiDB Operator 架构
1. controller 工作原理
2. 工作过程
3. 在 TiDB 上部署 Kubernetes 集群
详见官网文档
学习过程中参考的其他资料
无