1 前言
1.1 CNCF
1.2 云原生
1.3 公有云服务
1.4 私有云服务
1.5 混合云服务
2 Kubernetes定义
2.1 基本概念
2.2 架构演进
2.2.1 传统部署(Traditional deployment )
2.2.2 虚拟化部署(Virtualized deployment)
2.2.3 容器化部署(Container deployment)
2.3 使用场景
2.4 使用约束
3 Kubernetes架构
3.1 集群架构
3.2 控制面(Control Plane)组件
3.2.1 kube-apiserver
3.2.2 etcd
3.2.3 kube-scheduler
3.2.4 kube-controller-manager
3.2.5 cloud-controller-manager
3.3 节点(Node)组件
3.3.1 kubelet
3.3.2 kube-proxy
4 Kubernetes技术
4.1 容器化技术
4.1.1 cgroups技术
4.1.1.1 基本定义
4.1.1.2 核心接口文件
4.1.1.3 基本运作
4.1.1.3.1 挂载
4.1.1.3.2 进程
4.1.1.3.3 线程
4.1.1.3.4 事件
4.1.1.3.5 控制器
4.1.1.3.6 委派授权
4.1.1.3.7 指导原则
4.1.1.4 资源分发模型
4.1.1.4.1 权重
4.1.1.4.2 限制
4.1.1.4.3 保护
4.1.1.4.4 分配
4.1.1.5 控制器
cgroup控制器主要提供系统资源的控制与分发的功能,可控的系统资源包括cpu、内存、IO、进程、设备、RDMA以及Misc相关资源。
4.1.1.5.1 处理器
处理器控制器主要是提供CPU周期的控制与分发的功能。(单位:微秒)
cpu.stat |
该接口文件表示分发的cpu资源的统计信息 |
cpu.weight |
该接口文件表示分发的权重值,范围是[1, 10000],默认值是100 |
cpu.max |
该接口文件表示分发的最大值,默认是max 100000 |
4.1.1.5.2 内存
内存控制器主要是提供内存空间的控制与分发的功能。(单位:字节)
memory.current |
该接口文件表示当前内存使用量 |
memory.low |
该接口文件表示内存分发的最小值 |
memory.max |
该接口文件表示内存分发的最大值 |
memory.stat |
该接口文件表示分发的内存资源的统计信息 |
4.1.1.5.3 IO
IO控制器主要是提供IO资源的控制与分发的功能。
io.stat |
该接口文件表示分发的IO资源的统计信息 |
io.weight |
该接口文件表示IO资源分发的权重,默认值是100 |
io.max |
该接口文件表示IO资源分发的最大值 |
4.1.1.5.4 进程
进程控制器主要是提供进程的控制与分发的功能。
pids.max |
该接口文件表示最大的进程数量,默认值是max |
pids.current |
该接口文件表示当前节点以及子节点的进程数量 |
4.1.1.5.5 设备
设备控制器主要是提供设备的控制与分发的功能。cgroup设备控制器没有接口文件,使用BPF实现。
4.1.1.5.6 RDMA
RDMA是一种远程内存存取规范,该控制器提供RDMA的控制与分发的功能。
rdma.max |
该接口文件表示分发的最大值 |
rdma.current |
该接口文件表示当前的分发数量 |
(未完待续)