kubernetes经典面试:Pod启动过程

当我们在控制台执行命令 "kubectl create -f deploy.ymal" 的时候,k8s是如何将容器拉起来的。这个问题非常考验面试者对k8s的了解程度,如果对k8s组件的功能不太了解的话,很难回答得比较全面。

整个流程的概要图,如下所示:

kubernetes经典面试:Pod启动过程

首先kubectl会解析我们定义的Yaml文件,调用kube-apiserver接口创建Deployment;kube-apiserver接到请求后会先经过认证、授权和准入控制后转化为内部数据结构保存到Etcd中,此时返回客户端Deployment创建成功。

kube-controller-manager中的Deployment Controller会watch到有一个新的Deployment创建,便会调用kube-apiserver接口创建一个Replicaset;Replicaset Controller发现有新的Replicaset创建后,会调用kube-apiserver创建对应副本数的Pod,不仅如此,Replicaset Controller后期还会持续执行reconcile,如果有主机宕机,会重新创建Pod保持副本一致。此时Pod的NodeName字段还是空的。

kube-scheduler开始介入,发现集群中有未调度的Pod,于是会经过过滤筛选和排序后,选择出最合适的主机Node,如果没有合适的节点,还会执行优先级抢占。如果调度成功后,会调用kube-apiserver的bind接口,设置Pod的NodeName字段。

每个kubelet启动的时候都会watch本节点的Pod,如果发现有新的Pod调度到本节点。则会执行Pod的创建,调用CRI接口分别创建容器,调用CNI接口为容器创建网卡。至此Pod创建,然后kubelet会将Pod的状态定期同步到kube-apiserver中。

展开阅读全文

页面更新:2024-03-10

标签:都会   优先级   数据结构   控制台   概要   不仅如此   副本   节点   字段   集群   容器   网卡   后期   接口   过程   主机   经典   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top