我们在回顾下pod的启动流程:
- 用户通过kubectl,向api-server 发起请求
- api-server接受请求,并将数据写入etcd
- kube-scheduler通过watch检测到未绑定node 的pod,调度pod到某一node上,并通知给api-server,api-server将其写入etcd
- kubelet通过watch 检测到有新的pod调度过来,通过container runtime 运行新pod
- kubelet 通过cri 拉起pause 容器
- kubelet 通过cni 为pause容器创建网络(虚拟网络设备,ip地址)
- kubelet 拉起业务容器,业务容器和pause容器共享同一个网络空间
1.Controller Manager原理解析
一般来说,智能系统和自动系统通常会通过一个“操作系统”不断修正系统的工作状态 。在 Kubernetes 集群中,每个 Controller 都是这样的一个“操作系统”,它们通过 API Server提供的 (List-Watch) 接口实时监控集群中特定资源的状态变化,当发生各种故障导致某资渥对象的状态变化时, Controller 会尝试将其状态调整为期望的状态 。 比如当某个 Node意外岩机时, Node Controller 会及时发现此故障并执行自动化修复流程,确保集群始终处于预期的工作状态下 。 Controller Manager 是 Kubernetes 中各种操作系统的管理者,是集群内部的管理控制中心,也是 Kubernetes 自动化功能的核心。
&n