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;

整体逻辑(三层架构)

请求层(kubeclt发起请求、apiserver接收请求)

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

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

  • kubectlkube-apiserver

  • apiserver 负责:

    • 认证、授权
    • 写入期望状态(比如3个副本)到 etcd

记忆口诀:“kubectl喊,apiserver写etcd”


控制器层(实现期望状态)

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

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

  • Deployment Controller → 发现新的 Deployment → 创建 ReplicaSet

  • ReplicaSet Controller → 检查实际 Pod 数量 vs 期望副本 → 创建 Pod 对象

记忆口诀:“Deployment催,ReplicaSet补”


调度 & 节点执行层

  • kube-scheduler → 给 Pod 选 Node → 更新绑定信息
  • kubelet → 在 Node 上创建 Pod → 上报状态
  • kube-proxy → 更新本地网络规则

记忆口诀:“Scheduler选,Kubelet建,Proxy通”

自愈流程

如果某个Pod宕机

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

→自动创建新Pod

→ scheduler 重新调度

→ kubelet 创建 Pod,完成自愈。


自愈逻辑

  • Pod 宕机 → ReplicaSet 发现不够 → 重新创建 → Scheduler 调度 → Kubelet 启动
  • 本质就是:控制器循环 + 调度 + 节点执行

记忆口诀:“失踪补齐,调度执行”


Pod 创建流程图

text
kubectl create


kube-apiserver (写期望状态etcd)


Deployment Controller → ReplicaSet Controller


ReplicaSet 创建 Pod 对象 (写etcd)


kube-scheduler 选择 Node


kubelet 在 Node 上创建 Pod → 状态上报


kube-proxy 更新网络
  • 关键点:Deployment → ReplicaSet → Pod → Scheduler → Kubelet → Proxy
  • 自愈:ReplicaSet 检测 Pod 不够 → 重新触发调度 → Kubelet 创建

助记口诀

kubectl喊 → apiserver写 → Deployment催 → ReplicaSet补 → Scheduler选 → Kubelet建 → Proxy通 → Pod活