kubernetes基本概念和術(shù)語(一)

一、kubernetes術(shù)語概念剖析圖

kubernetes.png

  • 上圖微調(diào):Pod
    Pod其實(shí)有兩種類型:普通的Pod及靜態(tài)Pod(static Pod),后者比較特殊,它并不存放在Kubernetes的etcd存儲里,而是存放在某個(gè)具體的Node上的一個(gè)具體文件中,并且只在此Node上啟動運(yùn)行。而普通的Pod一旦被創(chuàng)建,就會被放入到etcd中存儲,隨后會被Kubernetes Master調(diào)度到某個(gè)具體的Node上并進(jìn)行綁定(Binding),隨后該P(yáng)od被對應(yīng)的Node上的kubelet進(jìn)程實(shí)例化成一組相關(guān)的Docker容器并啟動起來。在默認(rèn)情況下,當(dāng)Pod里的某個(gè)容器停止時(shí),Kubernetes會自動檢測到這個(gè)問題并且重新啟動這個(gè)Pod(重啟Pod里的所有容器),如果Pod所在的Node宕機(jī),則會將這個(gè)Node上的所有Pod重新調(diào)度到其他節(jié)點(diǎn)上。
    image.png

二、Master
Kubernetes里的Master指的是集群控制節(jié)點(diǎn),負(fù)責(zé)整個(gè)集群的管理和控制,基本上Kubernetes所有的控制命令都是發(fā)給它,它來負(fù)責(zé)具體的執(zhí)行過程,我們后面所有執(zhí)行的命令基本都是在Master節(jié)點(diǎn)上運(yùn)行的。
Master節(jié)點(diǎn)同城會展局一個(gè)獨(dú)立的X86服務(wù)器(或者一個(gè)虛擬機(jī)),主要原因是過于重要,它是整個(gè)集群的“首腦”,如果它宕機(jī)或者不可用,那么我們所有的控制命令都將失效。

Master節(jié)點(diǎn)上運(yùn)行著以下一組關(guān)鍵進(jìn)程:

  • Kubernetes API Server(kube-apiserver),提供了HTTP Rest接口的關(guān)鍵服務(wù)進(jìn)程,是Kubernetes里所有資源的增、刪、改、查等操作的唯一入口,也是集群控制的入口進(jìn)程。
  • Kubernetes Controller Manager(kube-controller-manager),Kubernetes里所有資源對象的自動化控制中心,可以理解為資源對象的“大總管”。
  • Kubernetes Scheduler(kube-scheduler),負(fù)責(zé)資源調(diào)度(Pod調(diào)度)的進(jìn)程,相當(dāng)于公交公司的“調(diào)度室”。
  • Master節(jié)點(diǎn)上啟動了一個(gè)etcd Server進(jìn)程,因?yàn)镵ubernetes里的所有資源對象的數(shù)據(jù)全部是保存在etcd中的。

三、Node
除了Master,Kubernetes集群中的其他機(jī)器被稱為Node節(jié)點(diǎn),在較早的版本中被稱為Minion。與Master一樣,Node節(jié)點(diǎn)可以是一臺物理主機(jī)也可以是一套虛擬機(jī)。Node節(jié)點(diǎn)才是Kubernetes集群中的工作負(fù)載節(jié)點(diǎn),每個(gè)Node都會被Master分配一些工作負(fù)載(Docker容器),當(dāng)某個(gè)Node宕機(jī)時(shí),其上的工作負(fù)載會被Master自動轉(zhuǎn)移到其他節(jié)點(diǎn)上去。

每個(gè)Node節(jié)點(diǎn)上都運(yùn)行著以下一組關(guān)鍵進(jìn)程:

  • kubelet:負(fù)責(zé)Pod對應(yīng)的容器的創(chuàng)建、啟停等任務(wù),同事與Master節(jié)點(diǎn)密切協(xié)作,實(shí)現(xiàn)集群管理的基本功能。
  • kube-proxy:實(shí)現(xiàn)Kubernetes Service的通信與負(fù)載均衡機(jī)制的重要組件。
  • Docker Engine(docker):Docker引擎,負(fù)責(zé)本機(jī)的容器創(chuàng)建和管理工作。
    Node節(jié)點(diǎn)可以在運(yùn)行期間動態(tài)增加到Kubernetes集群中,前提是這個(gè)節(jié)點(diǎn)上已經(jīng)正確安裝、配置和啟動了上述關(guān)鍵進(jìn)程,在默認(rèn)情況下kubelet會向Master注冊自己,這也是Kubernetes推薦的Node管理方式。一旦Node被納入集群管理范圍,kubelet進(jìn)程就會定時(shí)向Master節(jié)點(diǎn)匯報(bào)自身的情報(bào),例如操作系統(tǒng)、Docker版本、機(jī)器的CPU和內(nèi)存情況,以及之前有哪些Pod在運(yùn)行等,這樣Master可以獲知每個(gè)Node的資源使用情況,并實(shí)現(xiàn)高效均衡的資源調(diào)度策略。而每個(gè)Node超過指定時(shí)間不上報(bào)信息時(shí),會被Master判定為“失聯(lián)”,Node的狀態(tài)被標(biāo)記為不可用(Not Ready),隨后Master會觸發(fā)“工作負(fù)載大轉(zhuǎn)移”的自動流程。
    image.png

    image.png

    image.png

    image.png

三、Pod
Pod是Kubernetes的最重要也最基本的概念,每個(gè)Pod都有一個(gè)特殊的被稱為“根容器”的Pause容器。Pause容器對應(yīng)的鏡像屬于Kubernetes平臺的一部分,除了Pause容器,每個(gè)Pod還包含一個(gè)或多個(gè)緊密相關(guān)的用戶業(yè)務(wù)容器。

image.png

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容