这是我参与「第四届青训营 」笔记创作活动的第9天
一.Kubernetes简介
1.特点:便捷、可拓展、开源
目的:管理容器应用和服务
作用声明式配置和自动化
2.K8S核心概念:Pod、Deployment/StatefulSet、Volume/PVC/PV/StorageClass、Node
3.Pod
4.PV
capacity:容量
volumnMode:是文件系统/跨设备存储
5.Deployment
replicas:实例个数
tempate:pod的模板
6.StatefulSet:为每一个pod挂一个PVC数据
7.Node
status:状态
allocatable:节点可以分配的资源
capacity:物理资源
condition:节点状态
image:容器镜像
8.设计准则
- 声明式
- control loops
- simple
- Modularity
- Legacy compatible
- Open
9. 架构
ETCD:持久化数据中心,维护集群在所有数据的有序性和一致性
APIServer:对所有组件提供API接口,负责admission,鉴权等功能
提供后端etcd数据cacher,降低etcd压力,结合etcd,提供list-watch机制
Controller-Manager:提供一系列控制器,负责维护各种对象的生命周期
Kubelet:基于pob声明,真正开始启动容器,负责容器声明周期维护
Kube-proxy:网络代理,负责维护节点网络规则,接管Pod出入流量\
10.List-Watch机制
Process item提供增删改接口
11. 核心功能
- 服务发现和负载均衡
- 存储编排
- 自动发布,回滚
- 自愈
- 密钥,配置管理
- 资源管理,应用编排调度
二.资源管理
1.资源种类
2.资源上报
cAdvisor:资源采集器,采集后上报给Node Status setter,更新到Node API Object。
3.资源分配
- 计算资源
- 存储卷
4.状态维护
Protection controller:进行数据保护
Attach/Detach controller:跨设备存储
Cgroup manager:分配CPU
Device manager:分配维护GPU扩展类资源
Eviction manager:做驱逐,如果是CPU(可压缩资源),超过就会压制使用,如果是menmory(不可压缩资源),用超就会删掉。
5.资源回收
- 计算资源
- 存储卷:Volumn manager让Umounter去Umounter这个pob,Detach controller去tach这个volumn,之后PV controller去delete PV、PVC,这才真正删除pob。
三.调度
1.资源申请
request是底线
limit是上限
2.调度流程
3.Port vs Yarn
- 基本单位 Pod & Container
- 资源管理 K8S可以管理CPU、memory,可以进行拓展管理,但对于精细化管理不可靠。
- 调度模式: K8S:拿着应用找节点,调度质量好 YARN:拿着节点找应用
- 系统设计 K8S:节点缓存,异常恢复简单 YARN:中心存储