Kubernetes 中 Pod 和容器的區別
一、概述
Kubernetes是一個開源容器編排平台。它消除了與部署和擴展容器化應用程序相關的手動流程。此外,該系統允許您通過稱為 pod 的小單元在機器集群上管理和協調容器化應用程序。一個 pod 通常包括幾個容器,它們一起構成一個功能單元。
在本文中,我們將了解Kubernetes中 Pod 和容器的區別。
2.容器
容器是標準化的可執行組件,將應用程序源代碼與操作系統庫結合在一起。容器可以是數據庫、Web 應用程序或後端服務……
在Kubernetes中,每個容器都與其他進程隔離,並運行在計算機、物理服務器或虛擬機上。此外,容器非常輕便、快速且可移植,因為與虛擬機不同,容器不需要在每個實例中都包含一個操作系統,而是可以利用主機操作系統的功能和資源。
3.豆莢
Pod 是Kubernetes的基礎之一,因為它是開發人員可以操作的主要組件。它表示在集群節點內運行的一組進程。因此,pod 是Kubernetes應用程序的基本執行單元。它是最小和最簡單的對像模型。節點內的 pod 具有:
- 本地 IP 地址。
- 一個或多個 Linux 容器。例如,
Docker通常用作容器運行時。 - 與這些容器關聯的一個或多個卷是持久存儲資源。
4. Pod和Container有什麼區別?
因為我們不應該將多個進程打包到一個容器中,所以我們需要一個更高級別的結構,允許我們將容器綁定和包裝在一起並將它們作為一個單元進行管理。這就是 pod 背後的原因。簡而言之, Kubernetes pod 是容器的集合。
此外,容器 pod 允許它一起運行密切相關的進程。並為它們提供幾乎相同的環境,就好像它們都在一個容器中運行,同時保持它們幾乎隔離。這樣,我們可以兩全其美。我們可以利用容器提供的所有功能,同時讓進程產生協同工作的錯覺。
Pod 為其容器提供兩種類型的共享資源:網絡和存儲。
4.1.網絡
Kubernetes中的每個 pod 都由一個唯一的 IP 地址標識。此外,所有 Pod 容器共享相同的網絡命名空間,包括 IP 地址和網絡端口。
要在 pod 內部通信,容器可以簡單地使用 localhost 進行交換。但是,當 pod 容器與 pod 外部的組件通信時,它們必須共享如何使用端口等網絡資源。
4.2.貯存
我們可以為一個 pod 實例化一組共享存儲卷,所有容器都可以訪問這些卷。此功能允許容器有效地共享數據。此外,存儲卷允許 pod 的持久數據在其中一個容器出現問題時繼續存在。
5. Pod 和容器的生命週期
Kubernetes自動管理容器的生命週期並將它們分佈在整個託管基礎設施中。此外,它還能夠在容器失敗時自動重啟容器。 Kubernetes通過重啟策略提供此功能,允許用戶定義何時重啟 Pod 的容器。
讓我們看看 pod i容器相關的不同狀態:
Pending狀態:創建 Pod 時發生的第一件事是它進入稱為 pending 的狀態。在此狀態下,pod 已準備好運行但尚未分配給服務器。可能有幾台機器已準備好接收此 pod。調度程序的作用是檢查 pod 的資源需求(CPU 容量、內存等)並將其分配給特定的機器Running狀態:當一個 pod 被分配到一台機器上,組成這個 pod 的容器的鏡像已經被下載,並且所有的容器都已經啟動時,它就進入這個狀態Succeeded狀態:當 pod 中的所有容器都已成功停止並且不會重新啟動時,會出現此狀態Failed狀態:當 pod 中的所有容器都停止並且至少有一個容器因錯誤而終止時達到此狀態Unknown狀態:這主要發生在 pod 無法與它應該運行的節點通信時。在這種情況下,不可能知道 pod 狀態。
六,結論
在本文中,我們首先了解了 Pod 和容器。其次,我們討論了Kubernetes中 pod 和容器的區別。最後,我們解釋了 Pod 和容器的生命週期,以及pod,這直接受其持有的容器狀態的影響.