zl程序教程

您现在的位置是:首页 >  后端

当前栏目

10 张图带你搞懂 Kubernetes Pod 的创建流程

Kubernetes流程 创建 10 Pod 搞懂 张图
2023-09-14 09:01:47 时间

 

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

(1) kubectl 将 YAML 发送到 API

图片

  (2) Pod 存储在 etcd 中

图片

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

图片

(4) kubelet 开始创建 Pod

图片

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

图片

(6) CNI 分配一个 IP 地址

图片

 

(7) 检查探针
(8) kubelet 将 IP 地址报告给控制平面

图片

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

图片

这些端点将会用于以下:

  • kube-proxy设置iptables规则

  • CoreDNS更新DNS条目

  • Ingress入口控制器设置下游服务downstreams

  • Service meshes

  • More operators其他运营商

图片

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

 Cni不止分配一个ip就完了,还要给容器添加虚拟网卡和网关,通常同时还会在宿主机上新建容器veth对的另一端,通常有的会连到网桥! 以上这些是cni实现的二进制命令来做的。

通常cni还会有其他deamon在长期运行着,来做宿主机上的路由,arp,fdb等的配置,从而实现容器跨主机通信