原文鏈接:Kubernetes Pod 工作流
我們知道Pod
是Kubernetes
中最小的調(diào)度單元踪央,平時(shí)我們操作Pod
的時(shí)間也是最多的臀玄,那么你知道Pod
是怎樣被創(chuàng)建出來的嗎?知道他的工作流程嗎畅蹂?
組件之間的通信
我們知道在Kubernetes
集群中apiserver
是整個(gè)集群的控制入口健无,etcd
在集群中充當(dāng)數(shù)據(jù)庫的作用,只有apiserver
才可以直接去操作etcd
集群液斜,而我們的apiserver
無論是對內(nèi)還是對外都提供了統(tǒng)一的REST API
服務(wù)累贤,包括一個(gè)8080端口的非安全服務(wù)和6443端口的安全服務(wù)。組件之間當(dāng)然也是通過apiserver
進(jìn)行通信的少漆,其中kube-controller-manager
臼膏、kube-scheduler
、kubelet
是通過apiserver watch API
來監(jiān)控我們的資源變化示损,并且對資源的相關(guān)狀態(tài)更新操作也都是通過apiserver
進(jìn)行的渗磅,所以說白了組件之間的通信就是通過apiserver REST API
和apiserver watch API
進(jìn)行的。
Pod 工作流
那么我們創(chuàng)建Pod
的時(shí)候到底發(fā)生了什么呢?是怎樣創(chuàng)建成功Pod
的呢始鱼?
下面圖示就是一個(gè)非常典型的Pod
工作流程圖:
[站外圖片上傳中...(image-d783df-1535680178141)]
和上面的組件通信一致:
- 第一步通過
apiserver REST API
創(chuàng)建一個(gè)Pod
- 然后
apiserver
接收到數(shù)據(jù)后將數(shù)據(jù)寫入到etcd
中 - 由于
kube-scheduler
通過apiserver watch API
一直在監(jiān)聽資源的變化仔掸,這個(gè)時(shí)候發(fā)現(xiàn)有一個(gè)新的Pod
,但是這個(gè)時(shí)候該Pod
還沒和任何Node
節(jié)點(diǎn)進(jìn)行綁定风响,所以kube-scheduler
就經(jīng)過一系列復(fù)雜的調(diào)度策略嘉汰,選擇出一個(gè)合適的Node
節(jié)點(diǎn),將該Pod
和該目標(biāo)Node
進(jìn)行綁定状勤,當(dāng)然也會(huì)更新到etcd
中去的 - 這個(gè)時(shí)候一樣的目標(biāo)
Node
節(jié)點(diǎn)上的kubelet
通過apiserver watch API
檢測到有一個(gè)新的Pod
被調(diào)度過來了鞋怀,他就將該Pod
的相關(guān)數(shù)據(jù)傳遞給后面的容器運(yùn)行時(shí)(container runtime
),比如Docker
持搜,讓他們?nèi)ミ\(yùn)行該Pod
- 而且
kubelet
還會(huì)通過container runtime
獲取Pod
的狀態(tài)密似,然后更新到apiserver
中,當(dāng)然最后也是寫入到etcd
中去的葫盼。
這樣一個(gè)典型的Pod
工作流就完成了残腌,通過這個(gè)流程我們可以看出整個(gè)過程中最重要的就是apiserver watch API
和kube-scheduler
的調(diào)度策略。
廣告
另外我也無恥地
??給大家推薦一個(gè)我的課程:從 Docker 到 Kubernetes 進(jìn)階??贫导,學(xué)完本課程以后抛猫,你將會(huì)對Docker
和 Kubernetes
有一個(gè)更加深入的認(rèn)識,我們會(huì)講到 Docker 的一些常用方法孩灯,當(dāng)然我們的重點(diǎn)會(huì)在 Kubernetes 上面闺金,會(huì)用 kubeadm
來搭建一套 Kubernetes 的集群,理解 Kubernetes 集群的運(yùn)行原理峰档,常用的一些控制器使用方法败匹、還有 Kubernetes 的一些調(diào)度策略、Kubernetes 的運(yùn)維讥巡、包管理工具 Helm
的使用以及最后我們會(huì)實(shí)現(xiàn)基于 Kubernetes 的 CI/CD
掀亩。
[站外圖片上傳中...(image-4c830a-1535680178141)]
掃描下面的二維碼(或微信搜索k8s技術(shù)圈
)關(guān)注我們的微信公眾帳號,在微信公眾帳號中回復(fù) 加群 即可加入到我們的 kubernetes 討論群里面共同學(xué)習(xí)欢顷。
[站外圖片上傳中...(image-a0a671-1535680178141)]