新聞中心
Kubernetes核心技術(shù)Pod詳解、實例
作者:全棧行動派 2023-06-14 08:49:22
云計算
云原生 Pod 是 Kubernetes 的最重要概念,每一個 Pod 都有一個特殊的被稱為”根容器“的 Pause 容器。Pause 容器對應(yīng)的鏡 像屬于 Kubernetes 平臺的一部分,除了 Pause 容器,每個 Pod 還包含一個或多個緊密相關(guān)的用戶業(yè)務(wù)容器。

公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出寧夏免費做網(wǎng)站回饋大家。
1、概述
Pod 是 k8s 系統(tǒng)中可以創(chuàng)建和管理的最小單元,是資源對象模型中由用戶創(chuàng)建或部署的最 小資源對象模型,也是在 k8s 上運行容器化應(yīng)用的資源對象,其他的資源對象都是用來支 撐或者擴展 Pod 對象功能的,比如控制器對象是用來管控 Pod 對象的,Service 或者 Ingress 資源對象是用來暴露 Pod 引用對象的,PersistentVolume 資源對象是用來為 Pod 提供存儲等等,k8s 不會直接處理容器,而是 Pod,Pod 是由一個或多個 container 組成。
Pod 是 Kubernetes 的最重要概念,每一個 Pod 都有一個特殊的被稱為”根容器“的 Pause 容器。Pause 容器對應(yīng)的鏡 像屬于 Kubernetes 平臺的一部分,除了 Pause 容器,每個 Pod 還包含一個或多個緊密相關(guān)的用戶業(yè)務(wù)容器。
2、特性
(1)資源共享
一個 Pod 里的多個容器可以共享存儲和網(wǎng)絡(luò),可以看作一個邏輯的主機。共享的如 namespace,cgroups 或者其他的隔離資源。
多個容器共享同一 network namespace,由此在一個 Pod 里的多個容器共享 Pod 的 IP 和 端口 namespace,所以一個 Pod 內(nèi)的多個容器之間可以通過 localhost 來進(jìn)行通信,所需要 注意的是不同容器要注意不要有端口沖突即可。不同的 Pod 有不同的 IP,不同 Pod 內(nèi)的多 個容器之前通信,不可以使用 IPC(如果沒有特殊指定的話)通信,通常情況下使用 Pod 的 IP 進(jìn)行通信。
一個 Pod 里的多個容器可以共享存儲卷,這個存儲卷會被定義為 Pod 的一部分,并且可 以掛載到該 Pod 里的所有容器的文件系統(tǒng)上。
(2)生命周期短暫
Pod 屬于生命周期比較短暫的組件,比如,當(dāng) Pod 所在節(jié)點發(fā)生故障,那么該節(jié)點上的 Pod 會被調(diào)度到其他節(jié)點,但需要注意的是,被重新調(diào)度的 Pod 是一個全新的 Pod,跟之前的 Pod 沒有半毛錢關(guān)系。
(3)平坦的網(wǎng)絡(luò)
K8s 集群中的所有 Pod 都在同一個共享網(wǎng)絡(luò)地址空間中,也就是說每個 Pod 都可以通過其 他 Pod 的 IP 地址來實現(xiàn)訪問。
3、分類
(1)普通 Pod
普通 Pod 一旦被創(chuàng)建,就會被放入到 etcd 中存儲,隨后會被 Kubernetes Master 調(diào)度到某 個具體的 Node 上并進(jìn)行綁定,隨后該 Pod 對應(yīng)的 Node 上的 kubelet 進(jìn)程實例化成一組相 關(guān)的 Docker 容器并啟動起來。在默認(rèn)情 況下,當(dāng) Pod 里某個容器停止時,Kubernetes 會 自動檢測到這個問題并且重新啟動這個 Pod 里某所有容器, 如果 Pod 所在的 Node 宕機, 則會將這個 Node 上的所有 Pod 重新調(diào)度到其它節(jié)點上。
(2)靜態(tài) Pod
靜態(tài) Pod 是由 kubelet 進(jìn)行管理的僅存在于特定 Node 上的 Pod,它們不能通過 API Server 進(jìn)行管理,無法與 ReplicationController、Deployment 或 DaemonSet 進(jìn)行關(guān)聯(lián),并且 kubelet 也無法對它們進(jìn)行健康檢查。
4、Pod存在的意義
一個Pod可以存入多個容器,咱們就拿docker來說,docker是建議一個容器只是只是運行一個應(yīng)用程序,pod是以多進(jìn)程設(shè)計的,可以將依賴度比較高的兩個容器放入同一個pod(例如一個微服務(wù)項目調(diào)用了mysql數(shù)據(jù)庫,微服務(wù)和mysql數(shù)據(jù)庫這兩個容器放入同一個pod),因為pod內(nèi)網(wǎng)絡(luò)共享,這樣微服務(wù)連接mysql就像連接本地數(shù)據(jù)一樣,減少網(wǎng)絡(luò)IO等提高調(diào)用效率。
5、生命周期和重啟策略
(1)Pod 的狀態(tài)
|
狀態(tài) |
描述 |
|
Pending |
Api-server已創(chuàng)建改pod,但是pod中一個或者多個容器的鏡像還未創(chuàng)建,包括鏡像下載過程 |
|
Running |
pod內(nèi)所有容器已創(chuàng)建,且至少一個容器處于運行狀態(tài)、正在啟動或者重啟狀態(tài) |
|
Completed |
pod內(nèi)所有容器均成功執(zhí)行退出,且不會重啟 |
|
Failed |
pod內(nèi)所有容器均已退出,但至少一個容器退出失敗 |
|
Unknown |
由于某種原因無法獲取pod狀態(tài),例如網(wǎng)絡(luò)不通暢 |
(2)Pod 重啟策略
Pod 的重啟策略包括 Always、OnFailure 和 Never,默認(rèn)值是 Always
|
策略 |
描述 |
|
Always |
當(dāng)容器失效時,由kubelet自動重啟該容器 |
|
OnFailure |
當(dāng)容器終止運行且運行代碼不為0,,由kubelet自動重啟該容器 |
|
Never |
不論容器運行狀態(tài)如何,kubelet都不會重啟該容器 |
(3)常見狀態(tài)轉(zhuǎn)換
|
Pod包含的容器數(shù) |
Pod當(dāng)前狀態(tài) |
發(fā)生事件 |
Pod結(jié)果狀態(tài) |
||
|
RestartPolicy=Always |
OnFailure |
Never | |||
|
1個容器 |
Running |
容器成功退出 |
Running |
Succeeded |
Succeeded |
|
1個容器 |
Running |
容器失敗退出 |
Running |
Running |
Failure |
|
2個容器 |
Running |
1個容器失敗退出 |
Running |
Running |
Running |
|
2個容器 |
Running |
容器被OOM殺掉 |
Running |
Running |
Failure |
當(dāng)前名稱:Kubernetes核心技術(shù)Pod詳解、實例
本文URL:http://fisionsoft.com.cn/article/cojphsj.html


咨詢
建站咨詢
