k8s的Pod创建流程

K8S的创建流程

(1)kubectl会将用户的apply命令读取yaml文件发送给Api-server(以Deployment为例)

(2)Api-Server会根据配置创建Deployment资源,存储在ETCD中

(3)Controller-Manager会通过List-Watch机制从Api-server处获取创建资源所需要的数据,如果Deployment资源预先存在,则Controller-Manager会将创建Pod的资源信息传递给Api-server,Api-server会将pod的yaml文件写入ETCD

(4)Kube-Scheduler会通过调度算法选择一个节点给新创建的Pod,也通过Api-server将节点选择信息写回ETCD

(5)kubelet通过List-Watch机制从Api-Server处获取创建的Pod信息,包含资源数据,配置数据等,kubelet会通过CRI接口通知Containerd创建一个新的Pod,Containerd也会通过CRI告知kubelet当前Pod的状态,进一步kubelet告知Api-Server后更新ETCD中Pod的资源状态

创建细节

Api-Server

Api-Server在接受kubectl传进来的参数时,会校验证书是否合法,也会验证参数是否合法,如果不合法则会拒绝请求并返回错误信息
Api-Server负责为Pod分配IP

Controller-Manager

Controller-Manager会对Pod Spec验证,确保生成的Pod资源信息中容器镜像存在,容器端口没有冲突等

kube-Scheduler

Kube-Scheduler负责根据Pod的资源需求和当前集群节点的资源状况,为Pod选择一个合适的节点

kubelet

Kubelet负责拉取Pod需要的镜像,根据容器定义启动容器
Kubelet也负责定期监听容器状态,并更新到Api-Server
kubelet负责管理节点上的数据卷,使容器能够访问和使用持久化存储,包括存储卷的生命周期(创建,删除,扩容)
posted @ 2024-02-28 11:03  付同學  阅读(14)  评论(0编辑  收藏  举报