工作負載管理
Kubernetes 提供了多種內建 API,用於宣告式地管理你的工作負載及其元件。
最終,你的應用程式作為容器執行在Pod 內;然而,單獨管理 Pod 會非常費力。例如,如果一個 Pod 失敗,你可能希望執行一個新 Pod 來替換它。Kubernetes 可以為你完成這項工作。
你使用 Kubernetes API 建立一個工作負載物件,該物件代表比 Pod 更高的抽象級別,然後 Kubernetes 控制平面根據你定義的工作負載物件的規範,自動為你管理 Pod 物件。
用於管理工作負載的內建 API 包括:
Deployment(以及間接的ReplicaSet),是在叢集上執行應用程式最常見的方式。Deployment 非常適合管理叢集上的無狀態應用程式工作負載,其中 Deployment 中的任何 Pod 都是可互換的,並且可以在需要時進行替換。(Deployment 替代了舊版ReplicationController API)。
StatefulSet 允許你管理一個或多個 Pod——所有 Pod 都執行相同的應用程式程式碼——其中 Pod 依賴於具有獨特的身份。這與 Deployment 不同,在 Deployment 中,Pod 預計是可互換的。StatefulSet 最常見的用途是能夠在其 Pod 及其持久儲存之間建立連結。例如,你可以執行一個 StatefulSet,將每個 Pod 與一個PersistentVolume 關聯起來。如果 StatefulSet 中的一個 Pod 失敗,Kubernetes 會建立一個連線到同一個 PersistentVolume 的替代 Pod。
DaemonSet 定義了為特定節點提供本地功能的 Pod;例如,一個驅動程式,允許該節點上的容器訪問儲存系統。當驅動程式或其他節點級服務必須在它有用的節點上執行時,你就可以使用 DaemonSet。DaemonSet 中的每個 Pod 都扮演著類似於經典 Unix/POSIX 伺服器上的系統守護程序的角色。DaemonSet 可能對叢集的執行至關重要,例如一個允許該節點訪問叢集網路的外掛,它可能有助於你管理節點,或者它可能提供一些不那麼重要的設施,以增強你正在執行的容器平臺。你可以在叢集中的每個節點上執行 DaemonSet(及其 Pod),也可以只在子集上執行(例如,只在安裝了 GPU 的節點上安裝 GPU 加速器驅動程式)。
你可以使用Job 和/或CronJob 來定義執行完成然後停止的任務。Job 代表一次性任務,而 CronJob 則根據計劃重複執行。
本節中的其他主題