一、kubernetes術語概念剖析圖

kubernetes.png
-
上圖微調(diào):Pod
Pod其實有兩種類型:普通的Pod及靜態(tài)Pod(static Pod),后者比較特殊,它并不存放在Kubernetes的etcd存儲里,而是存放在某個具體的Node上的一個具體文件中,并且只在此Node上啟動運行。而普通的Pod一旦被創(chuàng)建,就會被放入到etcd中存儲,隨后會被Kubernetes Master調(diào)度到某個具體的Node上并進行綁定(Binding),隨后該Pod被對應的Node上的kubelet進程實例化成一組相關的Docker容器并啟動起來。在默認情況下,當Pod里的某個容器停止時,Kubernetes會自動檢測到這個問題并且重新啟動這個Pod(重啟Pod里的所有容器),如果Pod所在的Node宕機,則會將這個Node上的所有Pod重新調(diào)度到其他節(jié)點上。
image.png
二、Master
Kubernetes里的Master指的是集群控制節(jié)點,負責整個集群的管理和控制,基本上Kubernetes所有的控制命令都是發(fā)給它,它來負責具體的執(zhí)行過程,我們后面所有執(zhí)行的命令基本都是在Master節(jié)點上運行的。
Master節(jié)點同城會展局一個獨立的X86服務器(或者一個虛擬機),主要原因是過于重要,它是整個集群的“首腦”,如果它宕機或者不可用,那么我們所有的控制命令都將失效。
Master節(jié)點上運行著以下一組關鍵進程:
- Kubernetes API Server(kube-apiserver),提供了HTTP Rest接口的關鍵服務進程,是Kubernetes里所有資源的增、刪、改、查等操作的唯一入口,也是集群控制的入口進程。
- Kubernetes Controller Manager(kube-controller-manager),Kubernetes里所有資源對象的自動化控制中心,可以理解為資源對象的“大總管”。
- Kubernetes Scheduler(kube-scheduler),負責資源調(diào)度(Pod調(diào)度)的進程,相當于公交公司的“調(diào)度室”。
- Master節(jié)點上啟動了一個etcd Server進程,因為Kubernetes里的所有資源對象的數(shù)據(jù)全部是保存在etcd中的。
三、Node
除了Master,Kubernetes集群中的其他機器被稱為Node節(jié)點,在較早的版本中被稱為Minion。與Master一樣,Node節(jié)點可以是一臺物理主機也可以是一套虛擬機。Node節(jié)點才是Kubernetes集群中的工作負載節(jié)點,每個Node都會被Master分配一些工作負載(Docker容器),當某個Node宕機時,其上的工作負載會被Master自動轉移到其他節(jié)點上去。
每個Node節(jié)點上都運行著以下一組關鍵進程:
- kubelet:負責Pod對應的容器的創(chuàng)建、啟停等任務,同事與Master節(jié)點密切協(xié)作,實現(xiàn)集群管理的基本功能。
- kube-proxy:實現(xiàn)Kubernetes Service的通信與負載均衡機制的重要組件。
-
Docker Engine(docker):Docker引擎,負責本機的容器創(chuàng)建和管理工作。
Node節(jié)點可以在運行期間動態(tài)增加到Kubernetes集群中,前提是這個節(jié)點上已經(jīng)正確安裝、配置和啟動了上述關鍵進程,在默認情況下kubelet會向Master注冊自己,這也是Kubernetes推薦的Node管理方式。一旦Node被納入集群管理范圍,kubelet進程就會定時向Master節(jié)點匯報自身的情報,例如操作系統(tǒng)、Docker版本、機器的CPU和內(nèi)存情況,以及之前有哪些Pod在運行等,這樣Master可以獲知每個Node的資源使用情況,并實現(xiàn)高效均衡的資源調(diào)度策略。而每個Node超過指定時間不上報信息時,會被Master判定為“失聯(lián)”,Node的狀態(tài)被標記為不可用(Not Ready),隨后Master會觸發(fā)“工作負載大轉移”的自動流程。
image.png
image.png
image.png
image.png
三、Pod
Pod是Kubernetes的最重要也最基本的概念,每個Pod都有一個特殊的被稱為“根容器”的Pause容器。Pause容器對應的鏡像屬于Kubernetes平臺的一部分,除了Pause容器,每個Pod還包含一個或多個緊密相關的用戶業(yè)務容器。

image.png
我們所熟悉的Docker Volume在Kubernetes里也有對應的概念——Pod Volume,后者有一些擴展,比如可以用分布式文件系統(tǒng)GlusterFS實現(xiàn)后端存儲功能;Pod Volume是定義在Pod之上,然后被各個容器掛載到自己的文件系統(tǒng)中的。
Event概念:Event是一個事件的記錄,記錄了事件的最早產(chǎn)生時間、最后重現(xiàn)時間、重復次數(shù)、發(fā)起者、類型,以及導致此事件的原因等眾多信息Event通常會關聯(lián)到某個具體的資源對象上,是排查故障的重要參考信息。Node的描述信息包括了Event,Pod同樣有Event記錄,當某個Pod無法創(chuàng)建時,可以用kubectl describe pod xxxx查看描述信息,定位原因。




