这是我参与「第四届青训营」笔记创作活动的第1天。
一、Kubernetes 简介
1.1 定义
Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.(kubernetes.io/docs/concep…)
即Kubernetes是一个便携、可扩展、开源的容器管理平台。
1.2 核心概念
- pod: 容器资源管理的最小单位(有时表示一组容器)
- PVC/PV: 前者是用户的存储请求,包含一些申请资源的细节;后者由管理员设置,用于表示存储资源的细节。
- StorageClass:可以理解为管理员描述存储的一种类。
- Deployment:负责创建、更新、维护其所管理的所有Pods。
- Statefulset:一种副本控制器,管理pod的部署、缩放等。
- Node:Kubernetes集群中的工作负载节点。
1.3 设计准则
- Declarative > imperative
- Control loops
- Simple > Complex
- Modularity
- Legacy compatible
- Open > Closed
二、Kubernetes 架构
三、Kubernetes 资源管理
3.1 资源种类
- 计算类:CPU,memory以及非原生的numa,socket等。
- 存储类:Ephemeral storage,EmptyDir,RBD,Cephfs,NFS以及非原生的其他存储。
3.2 资源上报
两种方式:
- cAdvisor -> Kubelet -> Node
- Agent -> Device plugin -> Kubelet -> Node
3.3 资源上报
- 计算资源
- Kubelet -> cgroup manager -> cpu, memory...
- Kubelet -> device manager -> extended resources
2. 存储资源
- Controller manager -> provisioner -> attacher -> mounter
3.4 资源状态维护
- 计算资源:kubelet/cgroup manager/device manager/evictioner manager -> cpu, memory, extended resources
- 存储资源:PV controller -> PV/PVC
3.5 资源回收
- 计算资源
- Kubelet -> cgroup manager -> cpu, memory...
- Kubelet -> device manager -> extended resources
- 存储资源
- Controller manager -> unmounter -> detacher -> deleter
四、Kubernetes 调度
步骤如下:
- 过滤:
- Pre-Filter
- Filter
- Post-Filter
- 打分:
- 对节点的合适读打分
- 按分值高低排序
- 任务分配:
- Reserve
- Permit
- Pre-Bind
- Bind
五、Kubernetes 优化
优化方向主要有以下几点:
- 对非原生资源的精细化管理能力
- 动态资源接入的管理能力
- 调度的功能和性能
- 调度的质量