在用户使用kubectl命令提交yaml时,其实在整个k8s中很多组件都协调运作最终直观的展示生成的POD,那么这中间经历了很多流程,我们来看看这其中流程和原理具体是什么样的。
当用户kubectl提交yaml文件以后,kubectl会将yaml文件转成符合resful API规范的json数据提交到api server接口,api server接口有鉴权认证的功能,如果有做鉴权和认证那么在这一步就会进行认证,认证通过后就会将yaml提交的信息存储到etcd,这里我们可能会想到这就直接提交到etcd中存储,其它组件是如何之前用户新建了一个POD呢?
api server最大的特点是提供了watch接口,其它组件通过监听watch接口来知道资源的变化,对应的控制组件来进行管理和调整。
上面api server在提交新的POD到etcd中时,controller就能发现创建的请求,controller就会根据POD请求整合资源和网络拓扑,然后提交给api server,接着写入etcd,此时POD就到了可以被调度的阶段。
接下来就该scheduler工作了,它也是通过监听watch接口来感知POD可以被调度,通过自身算法给POD分配一个合适的节点,同时也将POD和节点的绑定信息再次通过api server写入到etcd,然后具体的调度动作任务下发给kebelet去执行。
最后kubelet收到pod后,调用CNI接口给pod创建pod网络,调用CRI接口去启动容器,调用CSI进行存储卷的挂载,等业务程序启动以后,整个POD就创建流程就彻底完成。
k8s创建POD的具体流程原理
内容版权声明:除非注明,否则皆为本站原创文章。