这是我参与「第四届青训营 」笔记创作活动的的第17天。
本节课程主要分为 4 个方面:
1.Kubernetes简介
2.资源管理
3.调度
4.优化实践
什么是容器?
一.Kubernetes简介
1.1.为什么要Kubernetes?
▨ 应用数量巨大怎么办?
▨ 如何编排?
▨ 出了问题如何恢复?
1.1.1.Kubernetes是什么?
▨ 特点:便携,可扩展,开源
▨ 目的:管理容器应用和服务
▨ 作用:声明式配置和自动化
1.1.2.Kubernetes核心概念
▨ Pod
▨ Deployment/StatefulSet
▨ Volume/PVC/PV/StorageClass
▨ Node
1.2.Kubernetes设计准则
▨ Declarative>imperative
▨ Control loops
▨ Simple>Complex
▨ Modularity
▨ Legacy compatible
▨ Open>Closed
1.3.Kubernetes架构
1.4.Kubernetes核心通信机制-List-Watch
1.5.Kubernetes核心功能
▨ 服务大仙和负载均衡
▨ 存储编排
▨ 自动发布,回滚
▨ 自愈
▨ 秘钥,配置管理
▨ 资源管理,应用编排调度
二.资源管理
2.1.资源上报
2.2.节点资源样例
▭ Capacity
▭ Allocatable
2.3.资源分配
▭ 计算资源
◎ Kubelet->cgroup manager->cpu, memory...
◎ Kubelet->device manager->extended resources
▭ 存储卷
◎ Controller manager->provisioner->attacher->mounter
2.4.状态维护
▭ 存储卷管理
◎ kubelet/cgroup manager/device manager/evictioner manager->cpu, memory, extended resources
▭ CPU,Me
◎ PV controller -> PV/PVC
2.5.资源回收
▭ 计算资源
◎ Kubelet -> cgroup manager -> cpu, memory...
◎ Kubelet -> device manager -> extended resources
▭ 存储卷
◎ Controller manager->unmounter->detacher->deleter
三.调度
3.1.资源申请
✔资源申请:
request、limit
✔ 其他约束:
◎ affinity/anti-affinity
◎ Label selector
◎ Taint & toleration
◎ Image locality
◎ Bin-packing/Load balancing...
3.2.调度流程
✔ 开始
✔ 过滤节点
✔ 打分
✔ 排序
✔ 选择适合的节点
四.优化实践
4.1.Kubernetes还可以更好
◼ 非原生资源的精细化管理能力
◼ 动态资源接入,管理能力
◼ 调度功能和性能
◼ 调度质量
4.2.字节的一些工作-资源管理
◎ Socket nume
◎ Local Disk
◎ 网卡
◎ 内存宽带
◎ GPU
◎ 应用实时CPU负载
◎ 机器实时CPU负载
4.2.1.性能优化 & 功能增强
◎ Gang
◎ 应用级别亲和性约束能力支持;
◎ 微拓扑调度能力支持;
◎ 资源预留;
◎ 系统重构: 分布式系统
4.2.2.调度质量
◎ 重调度;
◎ 业务上下游亲和性策略;
◎ 实时负载均衡策略;
◎ 碎片整理,优化等
4.3.Kubernetes和Yarn的一些不同
◼ 基本单位:Pod&Container
◼ 资源管理:
◎ 资源种类
◎ 扩展能力
◼ 调度模式:
◎ Task->Node
◎ Node->Task
◼ 系统设计:中心存储&节点缓存