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

156 阅读2分钟

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

一、Kubernetes 简介

1.1 定义

Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.(kubernetes.io/docs/concep…

即Kubernetes是一个便携、可扩展、开源的容器管理平台。

1.2 核心概念

  • pod: 容器资源管理的最小单位(有时表示一组容器)
  • PVC/PV: 前者是用户的存储请求,包含一些申请资源的细节;后者由管理员设置,用于表示存储资源的细节。
  • StorageClass:可以理解为管理员描述存储的一种类。
  • Deployment:负责创建、更新、维护其所管理的所有Pods。
  • Statefulset:一种副本控制器,管理pod的部署、缩放等。
  • Node:Kubernetes集群中的工作负载节点。

image.png

1.3 设计准则

  1. Declarative > imperative
  2. Control loops
  3. Simple > Complex
  4. Modularity
  5. Legacy compatible
  6. Open > Closed

二、Kubernetes 架构

image.png

三、Kubernetes 资源管理

3.1 资源种类

  1. 计算类:CPU,memory以及非原生的numa,socket等。
  2. 存储类:Ephemeral storage,EmptyDir,RBD,Cephfs,NFS以及非原生的其他存储。

3.2 资源上报

两种方式:

  • cAdvisor -> Kubelet -> Node
  • Agent -> Device plugin -> Kubelet -> Node

image.png

3.3 资源上报

  1. 计算资源
  • Kubelet -> cgroup manager -> cpu, memory...
  • Kubelet -> device manager -> extended resources

image.png 2. 存储资源

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

image.png

3.4 资源状态维护

  • 计算资源:kubelet/cgroup manager/device manager/evictioner manager -> cpu, memory, extended resources
  • 存储资源:PV controller -> PV/PVC image.png

3.5 资源回收

  1. 计算资源
  • Kubelet -> cgroup manager -> cpu, memory...
  • Kubelet -> device manager -> extended resources

image.png

  1. 存储资源
  • Controller manager -> unmounter -> detacher -> deleter

image.png

四、Kubernetes 调度

image.png

步骤如下:

  1. 过滤:
  • Pre-Filter
  • Filter
  • Post-Filter
  1. 打分:
  • 对节点的合适读打分
  • 按分值高低排序
  1. 任务分配:
  • Reserve
  • Permit
  • Pre-Bind
  • Bind

image.png

五、Kubernetes 优化

优化方向主要有以下几点:

  • 对非原生资源的精细化管理能力
  • 动态资源接入的管理能力
  • 调度的功能和性能
  • 调度的质量