这是我参与「第四届青训营 」笔记创作活动的第14天
Kubernetes概述、
Kubernetes is a portable, extensible,open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation.
- 特点: 便携,可扩展,开源
- 目的: 管理容器应用和服务
- 作用:声明式配置和自动化
Kubernetes 架构
-
ETCD
- 持久化数据中心
- 维护集群中所有数据的有序性和一致性
- 事件机制同步数据变更
-
APIServer
- 对所有组件提供 API 接口
- 负责 admission,鉴权等功能
- 提供后端 etcd 数据 cacher,降低 ETCD 压力
- 结合 ETCD,提供 List-Watch 机制
-
Controller-manager
- 提供一系列控制器,负责维护各种对象的生命周期 比如: Node controller, PV controller, Deployment controller, StatefulSet controller 等
-
Kubelet
- 基于 Pod 声明,真正开始启动容器,负责容器生命周期维护
-
Kube-proxy
- 网络代理,负责维护节点网络规则,接管 Pod 出入流量
Kubernetes设计准则
- Declarative > imperative: state vour desired results.let the svstem 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 a pps to change is a non-starter
- Open > Closed: Open Source, standards, REST, JSON,etc.
资源管理之资源种类:
-
计算类
- 原生: CPU,memory,等;
- 可通过 Device plugin 方式支持的非原生: numa,socket。。。
-
存储类
- 原生:
- 临时存储: Ephemeral storage,EmptyDir 等
- 持久化 (PV): Cinder, RBD, Cephfs, NFS, GlusterFS...
- 可以通过 CSI 方式扩展支持其他存储;
- 原生:
资源管理之资源上报:
-
计算资源上报:
- cAdvisor -> Kubelet -> Node
- Agent -> Device plugin -> Kubelet -> Node
-
存储资源上报:
- 临时存储:
- cAdvisor -> Kubelet -> Node
- 持久化存储:
- 托管到存储提供商管理
- 临时存储:
资源管理之资源分配:
-
计算资源分配:
- Kubelet -> cgroup manager -> cpu, memory...
- Kubelet -> device manager -> extended resources
-
存储资源分配:
- Controller manager -> provisioner -> attacher -> mounter
资源管理之资源状态维护:
-
计算资源状态维护:
- kubelet/cgroup manager/device manager/evictioner manager -> cpu, memory, extended resources
-
存储资源维护
- PV controller -> PV/PVC
资源管理之资源回收:
-
计算资源回收:
- Kubelet -> cgroup manager -> cpu, memory...
- Kubelet -> device manager -> extended resources
-
存储资源回收:
- Controller manager -> unmounter -> detacher -> deleter
Kubernetes 核心通信机制 - List-Watch
Kubernetes 核心功能
- 服务发现和负载均衡
- 存储编排
- 自动发布,回滚
- 自愈
- 秘钥,配置管理
- 资源管理,应用编排调度
节点资源样例
-
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
Kubernetes和Yarn的不同
- 基本单位
- Pod & Container
- 资源管理
- 资源种类
- 扩展能力
- 调度模式:
- Task -> Node
- Node -> Task AATS
- 系统设计
- 中心存储 & 节点缓存