这是我参与「第四届青训营 」笔记创作活动的的第10天。本篇笔记对于8.13日任玉泉老师讲授的《深入理解 K8S 资源管理和调度》的内容做一个复习总结。
概述
- 容器:和虚拟化一样需要物理机,但是只有一个操作系统,通过容器构建不同的隔离环境,轻量化
- Kubernetes:容器部署
- 特点:便携、可拓展、开源
- 目的:管理容器应用和服务
- 作用:声明式配置和自动化流程
- 核心概念:
- Pod:部署应用或服务的最小单位,可以独立运行,简化了部署的难度
- Deployment / StatefulSet:Deployment 是 Pod 的集合,通过 templete 便捷配置多个 pod ;StatefulSet 强调 Pod 可以跨存储空间,彼此联系强
- Volume / PVC / PV / StorageClass:Volumn 写入 Pod ,配置其空间等;K8S 封装后成为了 PVC / PV,PVC 是用户配置(空间大小声明等),PV 是底层存储概念,可以映射到存储空间,由管理员或 K8S 创建,PVC 和 PV 一一绑定;StorageClass 可以不需要 PV 单独映射,用户可以统一关联。
- Node:节点,数据或者控制
- 设计准则:
- 声明式而非命令式
- 控制循环:通过循环一步步达成声明的预期,并且保存循环保证状态正确
- 尽可能简单
- 模块化:甚至组件内部都是模块化的
- 版本向下兼容性
- 开源
- K8S 架构:(待补充)
- 通信机制:List-Watch
资源管理
- 资源种类:
- CPU、Memory、HugePages、GPU
- 2
- 3
- 4
- 资源上报
- 资源样例:
- 资源分配:
- 状态维护:
调度机制
- 资源申请:
优化实践
- 待优化的部分
- 非原生资源的精细化管理能力
- 动态资源接入,管理能力
- 调度功能和性能
- 调度质量
- 字节优化:
- Socket numa
- Local Disk
- 网卡
- 内存带宽
- GPU
- 应用/机器实时负载
- 功能增强:Gang、Job level affinity、微拓扑调度、资源预留,占位、重调度、丰富的排队策略
- K8S 和 Yarn 的不同
- 基本单位
- 资源管理
- 调度模式
- 系统设计