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

261 阅读2分钟

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

Kubernetes概述、

Kubernetes is a portable, extensible,open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation.

  • 特点: 便携,可扩展,开源
  • 目的: 管理容器应用和服务
  • 作用:声明式配置和自动化

Kubernetes 架构

image.png

  • ETCD

    • 持久化数据中心
    • 维护集群中所有数据的有序性和一致性
    • 事件机制同步数据变更
  • APIServer

    • 对所有组件提供 API 接口
    • 负责 admission,鉴权等功能
    • 提供后端 etcd 数据 cacher,降低 ETCD 压力
    • 结合 ETCD,提供 List-Watch 机制
  • Controller-manager

    • 提供一系列控制器,负责维护各种对象的生命周期 比如: Node controller, PV controller, Deployment controller, StatefulSet controller 等
  • Kubelet

    • 基于 Pod 声明,真正开始启动容器,负责容器生命周期维护
  • Kube-proxy

    • 网络代理,负责维护节点网络规则,接管 Pod 出入流量

Kubernetes设计准则

  • Declarative > imperative: state vour desired results.let the svstem 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 a pps to change is a non-starter
  • Open > Closed: Open Source, standards, REST, JSON,etc.

资源管理之资源种类:

  • 计算类

    • 原生: CPU,memory,等;
    • 可通过 Device plugin 方式支持的非原生: numa,socket。。。
  • 存储类

    • 原生:
      • 临时存储: Ephemeral storage,EmptyDir 等
      • 持久化 (PV): Cinder, RBD, Cephfs, NFS, GlusterFS...
    • 可以通过 CSI 方式扩展支持其他存储;

资源管理之资源上报:

  • 计算资源上报:

    • cAdvisor -> Kubelet -> Node
    • Agent -> Device plugin -> Kubelet -> Node
  • 存储资源上报:

    • 临时存储:
      • cAdvisor -> Kubelet -> Node
    • 持久化存储:
      • 托管到存储提供商管理

资源管理之资源分配:

  • 计算资源分配:

    • Kubelet -> cgroup manager -> cpu, memory...
    • Kubelet -> device manager -> extended resources
  • 存储资源分配:

    • Controller manager -> provisioner -> attacher -> mounter

资源管理之资源状态维护:

  • 计算资源状态维护:

    • kubelet/cgroup manager/device manager/evictioner manager -> cpu, memory, extended resources
  • 存储资源维护

    • PV controller -> PV/PVC

资源管理之资源回收:

  • 计算资源回收:

    • Kubelet -> cgroup manager -> cpu, memory...
    • Kubelet -> device manager -> extended resources
  • 存储资源回收:

    • Controller manager -> unmounter -> detacher -> deleter

Kubernetes 核心通信机制 - List-Watch

image.png

Kubernetes 核心功能

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

节点资源样例

  • Capacity:

    • bytedance.com/socket: 4
    • nvidia.com/gpu: : 8
    • cpu. 96 ephemeral-storage: 1729025612Ki
    • memory: 394587632Ki
    • pods: 110
  • Allocatable:

    • bytedance.com/socket: 4
    • nvidia.com/gpu: 8
    • cpu: 94
    • ephemeral-storage: 1655625292Ki
    • memory: 390681382Ki
    • pods: 110

Kubernetes和Yarn的不同

  • 基本单位
    • Pod & Container
  • 资源管理
    • 资源种类
    • 扩展能力
  • 调度模式:
    • Task -> Node
    • Node -> Task AATS
  • 系统设计
    • 中心存储 & 节点缓存