将 Pod 部署运行在 Kubernetes 内,前几个步骤你可能很熟悉

1、kubectl 将 YAML 发送到 API

图解Pod的创建_Pod

2、Pod 存储在 etcd 中

图解Pod的创建_Pod_02

3、调度程序分配一个节点(此时Pod配置清单文件存储在etcd中,节点内并没有该pod)

图解Pod的创建_k8s_03

4、kubelet 开始创建 Pod

图解Pod的创建_Pod_04

5、kubelet 将创建容器的委托委派给 CRI

图解Pod的创建_k8s_05

6、kubelet 代表将容器连接到 CNI 的网络

图解Pod的创建_kubernetes_06

7、CNI分配一个IP地址

图解Pod的创建_kubernetes_07

8、检查探针
9、kubelet 将 IP 地址报告给控制平面

图解Pod的创建_kubernetes_08


此时 Pod 就已经创建完成了,除非 Pod 是服务的一部分,否则 Kubernetes 会在此处停止。如果 Pod 属于服务,Kubernetes 会创建一个端点 endpoint - 它连接 Pod 的 IP 地址和端口(targetPort)。将端点 endpoint 添加到端点(对象object)。

图解Pod的创建_kubernetes_09

这些端点将会用于以下:

  • kube-proxy设置iptables规则
  • CoreDNS更新DNS条目
  • Ingress入口控制器设置下游服务downstreams
  • Service meshes
  • More operators其他运营商

图解Pod的创建_k8s_10

就这样,完成一个Pod的创建和发布,对于删除Pod来说过程一样,不过是相反。