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

68 阅读1分钟

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

01.Kubernetes简介

什么是容器

image-20220816114934963

为什么要Kubernetes ?

  • 应用数量巨大怎么办?
  • 如何自动部署?
  • 如何编排?
  • 出了问题如何恢复?

Kubernetes是什么?

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

如何在Kubernetes里面部署WordPress应用?

Kubernetes核心概念

  • Pod
  • Deployment/StatefulSet
  • Volume/PVC/PVIStorageClass
  • Node

image-20220816115916666

Kubernetes设计准则

  • Declarative > imperative: State your desired results, let the system 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 apps to change is a non-starter
  • open > Closed: Open Source, standards,REST,JSON, etc.

Kubernetes架构

image-20220816121114736

Kubernetes核心通信机制- List-Watch

image-20220817101920189

Kubernetes核心功能

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

02.资源管理

资源种类

  • CPU,Memory ,HugePages,GPU...
  • Socket,Numa,NIC
  • Ephemeral Storage, NFS, GlusterFS...RBD, Cinder...
  • ByteDance Storage (FS,Block)...

资源上报

image-20220817102229784

资源分配

计算资源

image-20220817102555969

存储卷

image-20220817102614932

状态维护

image-20220817102637255

资源回收

计算资源

image-20220817102756729

存储卷

image-20220817102821902

03.调度

调度流程

image-20220817103114112

image-20220817103345399

04.优化实践

Kubernetes还可以更好

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

优化

  • Socket numa
  • Local Disk
  • 网卡
  • 内存带宽
  • GPU
  • 应用实时CPU负载
  • 机器实时CPU负载