这是我参与「第四届青训营 」笔记创造活动的的第11天
课程资料
课程链接:live./4354/yc_K8S
课程PPT:bytedance.feishu.cn/file/boxcnK…
学员手册:/post/713013…
完整手册:bytedance.feishu.cn/docx/doxcnE…
一、Kubernetes 简介
几个中心概念

- Pod
- PVC/PV/StorageClass
- Deployment
- Statefulset
- Node
Kubernetes架构

-
ETCD
- 耐久化数据中心
- 保护集群中所有数据的有序性和一致性
- 事件机制同步数据变更
-
APIServer
- 对所有组件供给 API 接口
- 担任 admission,鉴权等功能
- 供给后端 etcd 数据 cacher,下降 ETCD 压力
- 结合 ETCD,供给 List-Watch 机制
-
Controller-manager
- 供给一系列控制器,担任保护各种目标的生命周期 比方: Node controller, PV controller, Deployment controller, StatefulSet controller 等
-
Kubelet
- 根据 Pod 声明,真正开始发动容器,担任容器生命周期保护
-
Kube-proxy
- 网络代理,担任保护节点网络规则,接收 Pod 出入流量
二、Kubernetes 资源管理
资源品种

-
核算类
- 原生: CPU,memory,等;
- 可通过 Device plugin 方法支持的非原生: numa,socket…
-
存储类
-
原生:
- 暂时存储: Ephemeral storage,EmptyDir 等
- 耐久化 (PV): Cinder, RBD, Cephfs, NFS, GlusterFS…
-
能够通过 CSI 方法扩展支持其他存储
-
资源上报

-
核算资源上报:
- cAdvisor -> Kubelet -> Node
- Agent -> Device plugin -> Kubelet -> Node
-
存储资源上报:
-
暂时存储:
- cAdvisor -> Kubelet -> Node
-
耐久化存储:
- 托管到存储供给商管理
-
资源分配

-
核算资源分配:
- Kubelet -> cgroup manager -> cpu, memory…
- Kubelet -> device manager -> extended resources
-
存储资源分配:
- Controller manager -> provisioner -> attacher -> mounter
资源状况保护

-
核算资源状况保护:
- kubelet/cgroup manager/device manager/evictioner manager -> cpu, memory, extended resources
-
存储资源保护
- PV controller -> PV/PVC
资源收回

-
核算资源收回:
- Kubelet -> cgroup manager -> cpu, memory…
- Kubelet -> device manager -> extended resources
-
存储资源收回:
- Controller manager -> unmounter -> detacher -> deleter
三、Kubernetes 调度
束缚描绘
-
资源申请:
- request、limit
-
其他束缚:
- affinity/anti-affinity
- Label selector
- Taint & toleration
- Image locality
- Bin-packing/Load balancing…
调度流程

调度框架

主要分为几个过程:
-
过滤
- Pre-Filter: 进行一些全局的预备工作,避免流程中多次重复核算;
- Filter: 根据 Pod 的束缚,进行 Pod -> Node 的匹配工作;
- Post-Filter: 假如没有一个合适的节点,则进行一些抢占行为(驱逐低优任务),看是否能找到合适节点;
-
打分
- 根据前面的过滤节点,对合适的节点进行打分,按照分值凹凸进行排序;
- 假如前面没有合适的节点,则直接调度失败;
-
任务分配
-
Reserve: 在调度器 cache 里边缓存调度成果,为了处理异步 API 操作带来的时延问题;
-
Permit: 扩展接口,能够在这里支持一些扩展语音,比方: Gang 等;
-
成果有三类: 失败,成功,等候
- 失败: 直接回来调度失败成果;
- 成功: 直接通过;
- 等候: 则异步等候,不阻塞其他流程;
-
-
Pre-Bind: 任务运行前的一些预备操作,比方: 动态创建 Volume 等;
-
Bind: 把 Pod 绑定到 Node,即: 给使用分配运行节点;
-
四、小结
Kubernetes 运行 MySql + WordPress 示例:
- kubernetes.io/zh-cn/docs/…
Kubernetes 与 Yarn 的一些不同点:
-
基本单位:
- Yarn: Container;
- Kubernetes: Pod;
-
资源管理的扩展能力:
- Yarn: 没供给 Plugin 机制,侵入性较大;
- Kubernetes: plugin 机制扩展,侵入性小;
-
调度模式:
- Yarn: Node -> Task
- Kubernetes: Task -> Node
-
体系设计
- Yarn: 节点缓存,无中心中心化存储;
- Kubernetes: 中心化存储;
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。