k8s创建一个pod的工作流程1.创建pod有两种方式:kubectl&&yaml文件
当我们在k8s中创建一个pod时,
kubectl run -it bs --image=busybox sh
2.在创建pod时,实际上会将yaml文件或命令行以固定的json格式返回给kube-apiserver,apiserver会将这个请求产生的数据全部存放到etcd数据库当中,而etcd会响应一个状态给apiserver,那pod创建之后,开始进入调度阶段scheduler【k8s是基于listwatch监听api中触发的事件】,scheduler会根据自己的算法调度这个pod具体应该创建在哪一个几点上,为它打上一个标记,然后再向apiserver进行反馈,apiserver会再将请求产生的数据写入到etcd中;kubelet也是通过listwatch通过apiserver获取当前节点的pod信息,拿到之后,会调用kube-apiserver去创建容器,并将创建状态返回给etcd记录。
listwatch:观察者模式,是k8s中的一种消息传递方式。
3.完整流程
create pod-> apiserver -> etcd
scheduler -> apiserver -> etcd -> scheduler
kubelet -> apiserver -> 只拿分配到当前节点的pod信息->docker api创建容器->将创建结果返回给apiserver
以上环节其实是少了几个组件:con