要想做好容器化實踐管理,關(guān)于Pod最全面的解析不得不看

原標(biāo)題:要想做好容器化實踐管理,關(guān)于Pod最全面的解析不得不看

在介紹Kubernetes集群管理的網(wǎng)絡(luò)篇中,我們已經(jīng)提到過Pod的概念。在Kubernetes的模型中,Pod是構(gòu)建各類工作負(fù)載的最基本模塊,也是用戶可以創(chuàng)建和部署的最小單元。本文將重點介紹Pod的基本概念、生命周期以及Pod的一些重要屬性。

在Kubernetes中,Pod是最基本的操作單元,也是用戶應(yīng)用運行的載體。Pod封裝了運行應(yīng)用程序的容器、存儲資源、網(wǎng)絡(luò)地址以及控制容器如何運行的各種配置。實際上,整個Kubernetes系統(tǒng)的設(shè)計都是以Pod為基礎(chǔ)展開的,包括如何部署和運行Pod、如何保障Pod的高可用、如何建立Pod的訪問入口等。

?

Pod與其他組件的關(guān)系

? Pod與容器

Docker是最常用的容器運行時,但是Pod同樣也支持使用其它的容器運行時。一個Pod中可以包含一個或者多個容器,其中運行多個容器的場景通常是這些容器之間耦合緊密并且需要共享部分資源,從微服務(wù)的角度來講,同一個Pod中的多個容器通常聚合形成一個單一的服務(wù)單元。Kubernetes會將同一個Pod中的所有容器部署在一個Node節(jié)點中。

? Pod與網(wǎng)絡(luò)

每個Pod將被分配一個唯一的IP地址,同一Pod內(nèi)部的所有容器都將共享同一個網(wǎng)絡(luò)地址空間,因此Pod內(nèi)部的容器間通過localhost即可互相通信,而這些容器對外通信時就需要共享同一個IP地址和所有端口,這就要求用戶在創(chuàng)建Pod時需要定義好容器間如何對這些網(wǎng)絡(luò)資源進(jìn)行共享。

? Pod與存儲

Pod內(nèi)的所有容器也將共享存儲資源,用戶在創(chuàng)建Pod時可以指定一系列共享存儲卷,Pod中的所有容器均可以訪問這些存儲卷用于互相共享數(shù)據(jù)。由于Pod本身的生命周期可能較短,共享存儲卷中的數(shù)據(jù)將會隨著Pod被刪除而釋放,Kubernetes也支持用戶通過PV(PersistentVolumes – 持久化存儲卷)將持久化存儲介質(zhì)掛載到Pod中供容器使用。

如何定義Pod的生命周期

Pod的整個生命周期被定義為多種不同狀態(tài),包括:Pending、Running、Succeeded、Failed、Unknown。

這些狀態(tài)的具體定義如下所示:

Pod可以被用戶直接創(chuàng)建,也可能通過Kubernetes提供的各類控制器創(chuàng)建(控制器為用戶提供了多種基于Pod的工作負(fù)載模型,我們將在后續(xù)文章中詳細(xì)介紹)。當(dāng)Pod被創(chuàng)建時,對應(yīng)的容器資源將會被分配到某個集群節(jié)點中啟動并運行,直到Pod停止。

通常Pod會因為3種原因停止:所有的容器均退出、節(jié)點資源不足將Pod驅(qū)逐、節(jié)點出現(xiàn)故障。

用戶可以對Pod中的容器設(shè)置重啟策略,用于在容器退出時判斷是否要重啟該容器。重啟策略包括Always、OnFailure及Never,分別代表容器總是會被重啟、僅在失敗退出時重啟、從不重啟。如果用戶不設(shè)置重啟策略,那么默認(rèn)的策略為Always。

其它重要功能

健康檢查:用戶可以對Pod設(shè)置兩種健康檢查探針:LivenessProbe和ReadinessProbe。前者用于判斷Pod中的容器是否存活(處于running狀態(tài)),當(dāng)探測到容器不健康時kill該容器并根據(jù)容器重啟策略做進(jìn)一步處理。后者用于判斷容器是否啟動完成(處于ready狀態(tài)),如果探測失敗即容器無法接受請求,則修改Pod的狀態(tài),用于對Pod對應(yīng)的訪問入口進(jìn)行處理。

Init容器:用戶可以在Pod中定義一個或者多個Init容器,這些容器會優(yōu)先于Pod中的其它容器啟動。Init容器總是按照順序一次運行一個,并且必須運行到成功,如果Init容器啟動失敗,Kubernetes將會不斷重啟該Pod,直到Init容器成功為止。當(dāng)所有Init容器運行完成時,Kubernetes才會初始化Pod并正常啟動其它的普通容器。

Pod Preset:Pod Preset是一種Kubernetes中的API資源,用來在創(chuàng)建Pod時向其注入運行時所需的額外信息,用戶通過使用標(biāo)簽選擇器來確定為Pod應(yīng)用哪些Presets。Preset最大的好處在于可以創(chuàng)建出具有通用性的Pod模板,而模板的使用者只需要通過Preset提供Pod運行時所需的定制化形式,從而無需關(guān)注Pod實現(xiàn)的所有細(xì)節(jié)。

本期關(guān)于Pod的概念就介紹到這里,在實際使用kubernetes的過程中,用戶其實很少會直接創(chuàng)建Pod,而是通過本文提到的控制器(Controller)來創(chuàng)建不同特定類型的Pod,下一篇文章我們將會詳細(xì)介紹各種不同的控制器類型,敬請期待。

極客網(wǎng)企業(yè)會員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2019-05-30
要想做好容器化實踐管理,關(guān)于Pod最全面的解析不得不看
原標(biāo)題:要想做好容器化實踐管理,關(guān)于Pod最全面的解析不得不看在介紹Kubernetes集群管理的網(wǎng)絡(luò)篇中,我們已經(jīng)提到過Pod的概念。在Kubernet...

長按掃碼 閱讀全文