原標(biāo)題:要想做好容器化實(shí)踐管理,關(guān)于Pod最全面的解析不得不看
在介紹Kubernetes集群管理的網(wǎng)絡(luò)篇中,我們已經(jīng)提到過Pod的概念。在Kubernetes的模型中,Pod是構(gòu)建各類工作負(fù)載的最基本模塊,也是用戶可以創(chuàng)建和部署的最小單元。本文將重點(diǎn)介紹Pod的基本概念、生命周期以及Pod的一些重要屬性。
在Kubernetes中,Pod是最基本的操作單元,也是用戶應(yīng)用運(yùn)行的載體。Pod封裝了運(yùn)行應(yīng)用程序的容器、存儲(chǔ)資源、網(wǎng)絡(luò)地址以及控制容器如何運(yùn)行的各種配置。實(shí)際上,整個(gè)Kubernetes系統(tǒng)的設(shè)計(jì)都是以Pod為基礎(chǔ)展開的,包括如何部署和運(yùn)行Pod、如何保障Pod的高可用、如何建立Pod的訪問入口等。
?
Pod與其他組件的關(guān)系
? Pod與容器
Docker是最常用的容器運(yùn)行時(shí),但是Pod同樣也支持使用其它的容器運(yùn)行時(shí)。一個(gè)Pod中可以包含一個(gè)或者多個(gè)容器,其中運(yùn)行多個(gè)容器的場(chǎng)景通常是這些容器之間耦合緊密并且需要共享部分資源,從微服務(wù)的角度來講,同一個(gè)Pod中的多個(gè)容器通常聚合形成一個(gè)單一的服務(wù)單元。Kubernetes會(huì)將同一個(gè)Pod中的所有容器部署在一個(gè)Node節(jié)點(diǎn)中。
? Pod與網(wǎng)絡(luò)
每個(gè)Pod將被分配一個(gè)唯一的IP地址,同一Pod內(nèi)部的所有容器都將共享同一個(gè)網(wǎng)絡(luò)地址空間,因此Pod內(nèi)部的容器間通過localhost即可互相通信,而這些容器對(duì)外通信時(shí)就需要共享同一個(gè)IP地址和所有端口,這就要求用戶在創(chuàng)建Pod時(shí)需要定義好容器間如何對(duì)這些網(wǎng)絡(luò)資源進(jìn)行共享。
? Pod與存儲(chǔ)
Pod內(nèi)的所有容器也將共享存儲(chǔ)資源,用戶在創(chuàng)建Pod時(shí)可以指定一系列共享存儲(chǔ)卷,Pod中的所有容器均可以訪問這些存儲(chǔ)卷用于互相共享數(shù)據(jù)。由于Pod本身的生命周期可能較短,共享存儲(chǔ)卷中的數(shù)據(jù)將會(huì)隨著Pod被刪除而釋放,Kubernetes也支持用戶通過PV(PersistentVolumes – 持久化存儲(chǔ)卷)將持久化存儲(chǔ)介質(zhì)掛載到Pod中供容器使用。
如何定義Pod的生命周期
Pod的整個(gè)生命周期被定義為多種不同狀態(tài),包括:Pending、Running、Succeeded、Failed、Unknown。
這些狀態(tài)的具體定義如下所示:
Pod可以被用戶直接創(chuàng)建,也可能通過Kubernetes提供的各類控制器創(chuàng)建(控制器為用戶提供了多種基于Pod的工作負(fù)載模型,我們將在后續(xù)文章中詳細(xì)介紹)。當(dāng)Pod被創(chuàng)建時(shí),對(duì)應(yīng)的容器資源將會(huì)被分配到某個(gè)集群節(jié)點(diǎn)中啟動(dòng)并運(yùn)行,直到Pod停止。
通常Pod會(huì)因?yàn)?種原因停止:所有的容器均退出、節(jié)點(diǎn)資源不足將Pod驅(qū)逐、節(jié)點(diǎn)出現(xiàn)故障。
用戶可以對(duì)Pod中的容器設(shè)置重啟策略,用于在容器退出時(shí)判斷是否要重啟該容器。重啟策略包括Always、OnFailure及Never,分別代表容器總是會(huì)被重啟、僅在失敗退出時(shí)重啟、從不重啟。如果用戶不設(shè)置重啟策略,那么默認(rèn)的策略為Always。
其它重要功能
健康檢查:用戶可以對(duì)Pod設(shè)置兩種健康檢查探針:LivenessProbe和ReadinessProbe。前者用于判斷Pod中的容器是否存活(處于running狀態(tài)),當(dāng)探測(cè)到容器不健康時(shí)kill該容器并根據(jù)容器重啟策略做進(jìn)一步處理。后者用于判斷容器是否啟動(dòng)完成(處于ready狀態(tài)),如果探測(cè)失敗即容器無法接受請(qǐng)求,則修改Pod的狀態(tài),用于對(duì)Pod對(duì)應(yīng)的訪問入口進(jìn)行處理。
Init容器:用戶可以在Pod中定義一個(gè)或者多個(gè)Init容器,這些容器會(huì)優(yōu)先于Pod中的其它容器啟動(dòng)。Init容器總是按照順序一次運(yùn)行一個(gè),并且必須運(yùn)行到成功,如果Init容器啟動(dòng)失敗,Kubernetes將會(huì)不斷重啟該P(yáng)od,直到Init容器成功為止。當(dāng)所有Init容器運(yùn)行完成時(shí),Kubernetes才會(huì)初始化Pod并正常啟動(dòng)其它的普通容器。
Pod Preset:Pod Preset是一種Kubernetes中的API資源,用來在創(chuàng)建Pod時(shí)向其注入運(yùn)行時(shí)所需的額外信息,用戶通過使用標(biāo)簽選擇器來確定為Pod應(yīng)用哪些Presets。Preset最大的好處在于可以創(chuàng)建出具有通用性的Pod模板,而模板的使用者只需要通過Preset提供Pod運(yùn)行時(shí)所需的定制化形式,從而無需關(guān)注Pod實(shí)現(xiàn)的所有細(xì)節(jié)。
本期關(guān)于Pod的概念就介紹到這里,在實(shí)際使用kubernetes的過程中,用戶其實(shí)很少會(huì)直接創(chuàng)建Pod,而是通過本文提到的控制器(Controller)來創(chuàng)建不同特定類型的Pod,下一篇文章我們將會(huì)詳細(xì)介紹各種不同的控制器類型,敬請(qǐng)期待。
- 世間將再無松下電視:松下官宣解散家電子公司并徹底放棄電視機(jī)業(yè)務(wù)
- 雅迪集團(tuán)與南都電源簽署協(xié)議:攜手共繪固態(tài)電池未來藍(lán)圖
- 美媒聚焦比亞迪“副業(yè)”:電子代工助力蘋果,下個(gè)大計(jì)劃瞄準(zhǔn)AI機(jī)器人
- 微信零錢通新政策:銀行卡轉(zhuǎn)入資金提現(xiàn)免手續(xù)費(fèi)引熱議
- 消息稱塔塔集團(tuán)將收購(gòu)和碩印度iPhone代工廠60%股份 并接管日常運(yùn)營(yíng)
- 蘋果揭秘自研芯片成功之道:領(lǐng)先技術(shù)與深度整合是關(guān)鍵
- 英偉達(dá)新一代Blackwell GPU面臨過熱挑戰(zhàn),交付延期引發(fā)市場(chǎng)關(guān)注
- 馬斯克能否成為 AI 部部長(zhǎng)?硅谷與白宮的聯(lián)系日益緊密
- 余承東:Mate70將在26號(hào)發(fā)布,意外泄露引發(fā)關(guān)注
- 無人機(jī)“黑科技”亮相航展:全球首臺(tái)低空重力測(cè)量系統(tǒng)引關(guān)注
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。