这是我参与「第四届青训营」笔记创作活动的的第17天
问题:如何部署你的WordPress应用(Mysql)?
登陆服务器,手动安装各种依赖,然后部署二进制?
自已编译,打包镜像,手动启动容器?
什么是容器
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.
➢特点:便携,可扩展,开源
➢目的: 管理容器应用和服务
➢作用:声明式配置和自动化
1.1 Kubernetes 核心概念
1)Pod
2)DeploymentStatefulSet
3)Volume/PVC/PV/StorageClass
4)Node
1.1 Kubernetes 核心概念 - Pod
1.1 Kubernetes 核心概念 - Volume/PV/PVC/StorageClass
1.1 Kubernetes 核心概念 - Deployment
1.1 Kubernetes 核心概念 - StatefulSet
1.1 Kubernetes 核心概念 - Node
1.2 Kubernetes 设计准则
1)Declarative > imperative: State your desired results, let the system actuate
-
Control loops: Observe, rectify, repeat
-
Simple » Complex: Try to do as ittle 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.
1.3 Kubernetes 架构
1.4 Kubernetes核心通信机制- List-Watch
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 资源上报
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 资源分配
计算资源
2.4 状态维护
2.5 资源回收
03.调度
3.1 资源申请
3.2 调度流程
3.4 示例
MySQL + WordPress
3.4.1 示例 - MySQL
3.4.2 示例 - WordPress
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
➢ 系统设计
中心存储&节点缓存