Pod是什么?
在前面創建部署時,Kubernetes創建了一個Pod來托管您的應用程序實例。Pod是一個Kubernetes抽象,表示一組一個或多個應用程序容器(如Docker或rkt),以及這些容器的一些共享資源。這些資源包括:
- 共享存儲,作為卷
- 網絡,作為唯一的群集IP地址
- 有關如何運行每個容器的信息,例如容器映像版本或要使用的特定端口
Pod為特定於應用程序的“邏輯主機”建模,並且可以包含相對緊密耦合的不同應用程序容器。例如,Pod可能既包含帶有Node.js應用程序的容器,也包含一個不同的容器,用於提供Node.js網絡服務器要發布的數據。Pod中的容器共享IP地址和端口空間,始終位於同一位置並共同調度,並在同一節點上的共享上下文中運行。
Pod是Kubernetes平台上的原子單元。當我們在Kubernetes上創建部署時,該部署會在其中創建包含容器的Pod(而不是直接創建容器)。每個Pod都與調度它的節點綁定,並保持在那里直到終止(根據重啟策略)或刪除。如果節點發生故障,則會在群集中的其他可用節點上調度相同的Pod。
Pods概念圖
Nodes是什么?
Pod總是在節點上運行。Node是Kubernetes中的工作機器,可以是虛擬機器,也可以是物理機器,具體取決於集群。每個節點由Master管理。節點可以有多個pod,Kubernetes master會自動處理在群集中的節點上調度pod。Master的自動調度考慮了每個節點上的可用資源。
每個Kubernetes節點至少運行:
- Kubelet,負責Kubernetes Master和Node之間通信的過程; 它管理Pod和機器上運行的容器。
- 容器運行時(如Docker,rkt)負責從注冊表中提取容器映像,解壓縮容器以及運行應用程序。