一、Pod介紹
1、Pod 的定義與核心設計
Pod 是 Kubernetes 的最小調度單元,由一個或多個容器組成,這些容器共享網絡、存儲、進程命名空間等資源,形成緊密協作的應用單元。Pod 的設計靈感來源于“豌豆莢”模型,容器如同豆子,共享同一環境但保持隔離性。其核心設計目標包括:
- ?輕量性:Pod 本身不負責資源分配,僅作為容器的邏輯封裝單元,高效利用集群資源。
- 臨時性:Pod 生命周期短暫,故障或任務完成后會被銷毀重建。
- 共享性:容器間通過共享網絡(同一 IP/端口)、存儲卷(Volume)和進程空間實現協作。
2、Pod 的實現機制
-
?基礎容器(Pause 容器)?
每個 Pod 啟動時首先創建
pause
容器,作為網絡和存儲的共享基礎。后續容器通過鏈接到pause
容器實現資源共用。例如,多容器 Pod 中,Nginx 和日志采集容器可通過localhost
直接通信。 -
?多容器協作模式
- ?主從容器(Sidecar)?:如 Web 服務容器與日志采集容器協同工作。
- 初始化容器(Init Container)?:用于預配置環境(如數據庫遷移),完成后才啟動主容器。
- 臨時任務容器:處理一次性任務(如數據備份),任務完成后自動終止。
3、網絡與存儲共享
- ?網絡共享
所有容器共享同一網絡命名空間,擁有相同的 IP 和端口空間。例如,一個 Pod 內的 Nginx 容器和調試工具容器可通過localhost:80
直接通信。
- ?存儲共享
通過 Volume 掛載實現數據持久化與共享。例如,多個容器可同時讀寫同一emptyDir
卷中的臨時文件。
4、生命周期與重啟策略
-
?生命周期階段
- ?Pending:等待調度與資源分配。
- Running:容器已啟動并運行。
- Succeeded/Failed:任務成功完成或異常終止。
-
?重啟策略
- ?Always?(默認):容器退出后自動重啟,適合長期服務。
- OnFailure:僅當容器異常退出(非零狀態碼)時重啟,適合批處理任務。
- Never:不重啟?