1.kubectl提交創建pod命令,api響應命令,通過一系列認證授權,把pod數據存儲到etcd,創建deployment資源並初始化.
2.controller通過list-watch機制,監測發現新的deployment,將該資源加入到內部工作隊列,發現該資源沒有關聯的pod和replicaset,啓用deployment controller創建replicaset資源,再啓用replicaset controller創建pod.
3.所有controller正常後.將deployment,replicaset,pod資源更新存儲到etcd.
4.scheduler通過list-watch機制,監測發現新的pod,經過主機過濾主機打分規則,將pod綁定(binding)到合適的主機.
5.將綁定結果存儲到etcd.
6.kubelet每隔 20s(可以自定義)向kube-apiserver通過NodeName 獲取自身Node上所要運行的pod清單.通過與自己的內部緩存進行比較,新增加pod.
7.啓動pod啓動容器.
8.把本節點的容器信息pod信息同步到etcd.