1.3. 简述Pod创建过程
文章从从 用户提交 → 控制面处理 → 节点运行 这条主线说明pod的创建过程
一、用户提交创建请求(入口)
- 用户通过
kubectl或 CI/CD 工具调用 K8s API Server,发送 YAML 请求,如:
kubectl apply -f pod.yaml
二、API Server 接收与存储
kube-apiserver收到请求后,进行:
-
- 身份认证(Authentication)
- 权限校验(Authorization)
- 准入控制(Admission)
- 合法后将 Pod 对象存入
etcd,状态为 Pending
三、Scheduler 调度 Pod
kube-scheduler从 API Server watch 到新的 Pending Pod- 根据调度策略(资源、亲和性、污点容忍等)选择最佳 Node
- 更新该 Pod 的
.spec.nodeName字段,绑定到节点
四、kubelet 拉起 Pod
- 被调度的 Node 上的
kubeletwatch 到自己 Node 上的新 Pod - kubelet 根据 PodSpec:
-
- 拉取镜像(通过 container runtime,比如 containerd)
- 创建 pause 容器作为 Pod 网络命名空间
- 创建业务容器并加入 pause 的 namespace
- 挂载 volume、设置探针、配置网卡等
五、Pod 启动成功 & 状态更新
- kubelet 启动容器后,将状态汇报给
apiserver - 如果探针检查通过,Pod 状态由
ContainerCreating → Running
流程图:
kubectl → apiserver → etcd
↓
scheduler → 选 Node
↓
kubelet 拉起 Pod → containerd → run container
↓
状态汇报 → Pod 进入 Running 状态
总结一句话:
Pod 创建是一个从声明(YAML)→ 调度(Scheduler)→ 实现(kubelet + runtime)→ 状态反馈(APIServer)的完整闭环,是 Kubernetes “声明式 → 自动化 → 可观测” 的核心体现。