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

121 阅读2分钟

  这是我参与「第四届青训营 」笔记创作活动的的第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 的不同
    • 基本单位
    • 资源管理
    • 调度模式
    • 系统设计