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

142 阅读2分钟

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

问题:如何部署你的WordPress应用(Mysql)?

登陆服务器,手动安装各种依赖,然后部署二进制?

自已编译,打包镜像,手动启动容器?

什么是容器

未命名.png

01. Kubernetes 简介

01.为什么要Kubernetes ?

1)应用数量巨大怎么办?

2)如何自动部署?

3)如何编排?

4)出了问题如何恢复?

01. Kubernetes是什么?

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

kubernetes.io/docs/concep…

➢特点:便携,可扩展,开源

➢目的: 管理容器应用和服务

➢作用:声明式配置和自动化

1.1 Kubernetes 核心概念

1)Pod

2)DeploymentStatefulSet

3)Volume/PVC/PV/StorageClass

4)Node

未命名.png

1.1 Kubernetes 核心概念 - Pod

截屏2022-08-16 21.49.04.png

1.1 Kubernetes 核心概念 - Volume/PV/PVC/StorageClass

截屏2022-08-16 21.54.37.png

截屏2022-08-16 21.54.55.png

截屏2022-08-16 21.54.47.png

1.1 Kubernetes 核心概念 - Deployment

截屏2022-08-16 21.56.58.png

1.1 Kubernetes 核心概念 - StatefulSet

截屏2022-08-16 21.57.58.png

1.1 Kubernetes 核心概念 - Node

截屏2022-08-16 21.57.58.png

1.2 Kubernetes 设计准则

1)Declarative > imperative: State your desired results, let the system actuate

  1. Control loops: Observe, rectify, repeat

  2. Simple » Complex: Try to do as ittle as possible

  3. Modularity: Components, interfaces, & plugins

  4. Legacy compatible: Meet users where they are, requiring apps to change is a non-starter

  5. Open > Closed: Open Source, standards, REST, JSON, etc.

1.3 Kubernetes 架构

截屏2022-08-16 22.01.24.png

1.4 Kubernetes核心通信机制- List-Watch

截屏2022-08-16 22.02.18.png

1.5 Kubernetes核心功能

1)服务发现和负载均衡

2)存储编排

3)自动发布,回滚

4)自愈

5)秘钥,配置管理

6)资源管理,应用编排调度

02.资源管理

02. 资源种类

CPU, Memory,HugePages, GPU..

Socket, Numa, NIC...

Ephemeral Storage,NFS, GlusterFS.. RBD, Cinder...

ByteDance Storage(FS, Block)...

2.1 资源上报

截屏2022-08-16 22.06.51.png

2.2 节点资源样例

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

2.3 资源分配

计算资源

截屏2022-08-16 22.10.15.png

截屏2022-08-16 22.11.07.png

2.4 状态维护

截屏2022-08-16 22.11.56.png

2.5 资源回收

截屏2022-08-16 22.12.50.png

截屏2022-08-16 22.13.15.png

03.调度

3.1 资源申请

截屏2022-08-16 22.14.41.png

截屏2022-08-16 22.15.08.png

截屏2022-08-16 22.15.28.png

3.2 调度流程

截屏2022-08-16 22.16.30.png

截屏2022-08-16 22.16.50.png

3.4 示例

MySQL + WordPress

3.4.1 示例 - MySQL

截屏2022-08-16 22.18.37.png

截屏2022-08-16 22.18.44.png

3.4.2 示例 - WordPress

截屏2022-08-16 22.19.50.png

截屏2022-08-16 22.19.58.png

04.优化实践

4.1 Kubernetes还可以更好

1)非原生资源的精细化管理能力

2)动态资源接入,管理能力

3)调度功能和性能

4)调度质量

4.2 字节的一些工作 - 资源管理

Socket Local Disk 网卡 内存带宽 GPU

应用实时CPU负载 机器实时CPU负载 ...

4.2 字节的一些工作-功能增强

Gang Job level affinity 微拓扑调度

资源预留,占位 重调度 丰富的排队策略

4.2 字节的一些工作-性能优化

吞吐: 100 -> 5000

4.2 字节的一些工作-调度质量

实时负载均衡

资源碎片

应用亲和,反亲和

...

4.3 Kubernetes和Yarn的一些不同

➢ 基本单位69

Pod & Container

➢ 资源管理

资源种类

扩展能力

➢ 调度模式:

Task -> Node

Node -> Task

➢ 系统设计

中心存储&节点缓存