Skip to content

pod的创建流程

1:执行 kubectl create -f nginx-deploy yaml → kubectl 向 kube-apiserver 发起创建请求;

2:kube-apiserver 完成「认证/授权」后,将Deployment 的「期望状态」(比如3个副本)写入etcd,并返回创建成功;

3:kube-controler-manager 中的 Deployment 控制器,通过apiserver 发现新的 Deployment,自动创建对应的 ReplicaSet;

4:eplicaSet 控制器发现「期望3个Pod,实际0个」,通过 apiserver 创建3个Pod 的资源对象,写入etcd:

5:kube-scheduler 监听 apiserver,发现3个[待调度的 Pod」,为每个Pod 筛选并打分,选出最合 适的 Node 节点,将调度结果(Pod 绑定到哪个Node)更新到etcd;

6:对应 Node节点上的 kubelet,通过apiserver 发现「自己被分配了Pod」,调用容器运行时(Docker/containerd)创建 Pod,Pod 启动成功后,kubelet 将 Pod的「实际运行状态」上报给 apiserver,apiserver 更新到 etcd; pn

7: kube-proxy 监控到 Pod 创建后,更新本地的 iptables/ipvs 规则,让 Service 可以转发流量到新Pod;

后续如果某个Pod宕机

→ ReplicaSet控制器发现「实际2个Pod+期望 3个」

→自动创建新Pod

→ scheduler 重新调度

→ kubelet 创建 Pod,完成自愈。