深入理解K8S资源管理和调度|青训营笔记

160 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第9天

一.Kubernetes简介

1.特点:便捷、可拓展、开源

目的:管理容器应用和服务
作用声明式配置和自动化

2.K8S核心概念:Pod、Deployment/StatefulSet、Volume/PVC/PV/StorageClass、Node

image.png

3.Pod

image.png

4.PV

image.png

image.png capacity:容量
volumnMode:是文件系统/跨设备存储

5.Deployment

image.png replicas:实例个数
tempate:pod的模板

6.StatefulSet:为每一个pod挂一个PVC数据

image.png

7.Node

image.png 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提供增删改接口

image.png

11. 核心功能

  • 服务发现和负载均衡
  • 存储编排
  • 自动发布,回滚
  • 自愈
  • 密钥,配置管理
  • 资源管理,应用编排调度

二.资源管理

1.资源种类

image.png

2.资源上报

cAdvisor:资源采集器,采集后上报给Node Status setter,更新到Node API Object。

image.png

3.资源分配

  • 计算资源

image.png

  • 存储卷

image.png

4.状态维护

Protection controller:进行数据保护
Attach/Detach controller:跨设备存储
Cgroup manager:分配CPU
Device manager:分配维护GPU扩展类资源
Eviction manager:做驱逐,如果是CPU(可压缩资源),超过就会压制使用,如果是menmory(不可压缩资源),用超就会删掉。

5.资源回收

  • 计算资源

image.png

  • 存储卷:Volumn manager让Umounter去Umounter这个pob,Detach controller去tach这个volumn,之后PV controller去delete PV、PVC,这才真正删除pob。

image.png

三.调度

1.资源申请

image.png

image.png request是底线 limit是上限

2.调度流程

image.png

3.Port vs Yarn

  • 基本单位 Pod & Container
  • 资源管理 K8S可以管理CPU、memory,可以进行拓展管理,但对于精细化管理不可靠。
  • 调度模式: K8S:拿着应用找节点,调度质量好 YARN:拿着节点找应用
  • 系统设计 K8S:节点缓存,异常恢复简单 YARN:中心存储