Skip to content

pod创建流程 ​

创建pod的完整流程
0、controller-manager组件、scheduler组件、kubelet组件都watch监听apiserver、监听自己的关注的资源状态
只要有更新,apiserver就会上报该更新给对应的组件
​
1、客户端命令kubectl提交创建pod的请求(该pod的控制器采用Replicaset)

2、apiserver收到该请求,会把创建replicaset的请求写入etcd  
  
3、上报事件replicaset created  
  
4、controller-mamanger收到replicaset created事件,进入调谐阶段  
    controller-mamanger发现当前该pod是0副本,预期要创建1个副本  
      
5、所以controller-mamanger发起要创建一个pod的请求给apiserver  
      
      
6、apiserver将创建pod的事件存入etcd中  
  
7、apiserver上报Pod created事件   
  
8、scheduler组件收到Pod created事件(因为scheduler一直watch着该资源的变动)  
  
    scheduler经过预选与优选来选出一台合适的物理节点来创建新pod  
  
  
9、scheduler把调度结果(要在某一台物理节点上创建新pod)发送给apiserver  
  
  
10、将事件存入etcd中  
  
11、上报该事件  
  
12、某一个物理节点上的kubelet会收到该事件,进入pod创建环节  
  
  
13、kubelet会调用容器引擎以及网络插件创建出pod  
  
    (1)kubelet会先调用容器引擎创建出一个pause容器  
    (2)然后kubelet会调用网络插件来把pause容器的网络打通  
    (3)kubelet会调用容器引擎来创建出业务容器,并且业务容器采用的container网络模式  
    与pause容器共享网络  
      
      
    补充:关于kubelet如何对接容器引擎的详细如下  
        如果kubelet对接的docker引擎,对接流程如下  
  
            kubelet –> docker shim (在 kubelet 进程中) –> dockerd –> containerd  
                  
                  
        如果kubelet对接的containerd引擎,对接流程如下  

​
kubelet –> cri plugin(在 containerd 进程中) –> containerd

用 VitePress 构建