k8s创建pod资源过程
参考:https://www.modb.pro/db/194974
创建pod时序图

创建pod形式有二种方案,一种是通过api直接创建生成yaml,另外一种是通过yaml直接应用。 1、首先进行认证(RBAC方式 或者 key方式进行认证 )后获得具体的权限,然后kubectl会调用master api创建对象的接口,然后向k8s apiserver发出创建pod的命令。 2、apiserver收到请求后,并非直接创建pod,而是先创建一个包含pod创建信息的yaml文件,并将文件信息写入到etcd中(如果此处是用yaml文件创建pod,则这两步就可以忽略)。 3、 创建Pod的yaml信息会交给controller manager ,controller manager根据配置信息将要创建的资源对象(pod)放到等待队列中。 4、Scheduler根据等待队列中的资源对象将其分配到合适的node节点,分配过程需要两层调度:预选调度和优选调度。 (1)预选调度:一般根据资源对象的配置信息进行筛选。例如NodeSelector、HostSelector和节点亲和性等。 (2)优选调度:根据资源对象需要的资源和node节点资源的使用情况,为每个节点打分,然后选出最优的节点创建资源对象(pod)。 5、节点(选中node)上的kubelet进程通过API Server,查看etcd数据库(kubelet通过API Server的WATCH接口监听Pod信息,如果监听到新的pod副本被调度绑定到本节点)监听到kube-scheduler产生的Pod绑定事件后获取对应的Pod清单,然后调用(被选中node)本机中的docker api初始化volume、分配IP、下载image镜像,创建容器并启动服务。 6、controller manager会通过API Server提供的接口实时监控资源对象的当前状态,当发生各种故障导致系统状态发生变化时,会尝试将其状态修复到“期望状态”。


浙公网安备 33010602011771号