这是我参与「第四届青训营 」笔记创作活动的第5天
这节课的重点内容包括四部分:Kubernetes简介、资源管理、调度、优化实践。
一、Kubernetes简介
特点:便携、可扩展、开源
目的:管理容器应用和服务
作用:声明式配置和自动化
1.1 Kubernetes核心概念
- Pod
- Deployment/StatefulSet
- Volume/PVC/PV/StorageClass
- Node
Pod
Volume/PVC/PV/StorageClass
Deoloyment
StatefulSet
Node
1.2 Kubernetes设计准则
- Declarative>imperative:State your desired results,let the system actuate
- Control loops:Observe,rectify,repeat
- Simple>Complex:Try to do as little as possible
- Modularity:Components,interfaces,&plugins
- Legacy compatible:Meet users where they are,requiring apps to change is a non-starter
- Open>Closed:Open Source,standards,REST,JSON,etc.
1.3 Kubernetes架构
- Controller-Manager:提供一系列控制器,负责维护各种对象的生命周期
- ETCD:持久化数据中心;维护集群中所有数据的有序性和一致性;事件机制同步数据变更
- APIServer:对所有组件提供API接口;负责admission,鉴权等功能;提供后端etcd数据cacher,降低ETCD压力;结合ETCD压力,提供List-Watch机制
- Scheduler:负责应用实例的调度,把Pod绑定到合适的Node
- Kubelet:基于Pod声明,真正开始启动容器,负责容器生命周期维护
- Kube-proxy:网络代理,负责维护节点网络规则,接管Pod出入流量
1.4 Kubernetes核心通信机制——List-Watch
1.5 Kubernetes核心功能
- 服务发现和负载均衡
- 存储编排
- 自动发布,回滚
- 自愈
- 秘钥,配置管理
- 资源管理,应用编排调度
二、资源管理
2.1 资源上报
2.2 节点资源样例
2.3 资源分配
计算资源
存储卷
2.4 状态维护
2.5 资源回收
计算资源
存储卷
三、调度
3.1 资源申请
3.2 调度流程
3.3 示例
MySQL+WordPress
3.3.1 MySQL
3.3.2 WordPress
示例
四、优化实践
4.1 Kubernetes还可以更好
- 非原生资源的精细化管理能力
- 动态资源接入,管理能力
- 调度功能和性能
- 调度质量
4.2 字节的一些工作
资源管理
- Socket numa
- Local Disk
- 网卡
- 内存带宽
- GPU
- 应用实时CPU负载
- 机器实时CPU负载
功能增强
- Gang
- Job level affinity
- 微拓扑调度
- 资源预留,占位
- 重调度
- 丰富的排队策略
性能优化
吞吐:100->5000
调度质量
- 实时负载均衡
- 资源碎片
- 应用亲和,反亲和
4.3 Kubernetes和Yarn的一些不同
- 基本单位:Pod & Container
- 资源管理:资源种类;扩展能力
- 调度模式;Task->Node;Node->Task;
- 系统设计:中心存储 & 节点缓存