工作負載管理
Kubernetes 提供多個內建 API,用於宣告式管理您的工作負載以及這些工作負載的元件。
最終,您的應用程式會以容器形式在 Pod 內執行;但是,管理個別的 Pod 會非常費力。例如,如果 Pod 失敗,您可能會想要執行新的 Pod 來取代它。Kubernetes 可以為您做到這一點。
您可以使用 Kubernetes API 來建立物件,此物件代表比 Pod 更高層級的抽象概念的工作負載,然後 Kubernetes 控制平面會根據您定義的工作負載物件的規格,自動為您管理 Pod 物件。
用於管理工作負載的內建 API 包括:
Deployment(部署)(以及間接的 ReplicaSet(副本集)),這是在您的叢集上執行應用程式最常見的方式。Deployment 非常適合在您的叢集上管理無狀態應用程式工作負載,其中 Deployment 中的任何 Pod 都是可互換的,並且可以在需要時更換。(Deployment 是已淘汰的 ReplicationController(複寫控制器) API 的替代方案)。
StatefulSet(狀態型集合)讓您可以管理一個或多個 Pod - 全部執行相同的應用程式程式碼 - 其中 Pod 依賴於具有獨特的身份。這與 Deployment 不同,Deployment 中的 Pod 預期是可以互換的。StatefulSet 最常見的用途是能夠在其 Pod 和其持久儲存之間建立連結。例如,您可以執行一個 StatefulSet,將每個 Pod 與一個 PersistentVolume(持久卷)相關聯。如果 StatefulSet 中的其中一個 Pod 失敗,Kubernetes 會建立一個替換 Pod,該 Pod 連接到相同的 PersistentVolume。
DaemonSet(守護程序集合)定義了提供特定 節點本地設施的 Pod;例如,一個驅動程式,讓該節點上的容器可以存取儲存系統。當驅動程式或其他節點級別的服務必須在對其有用的節點上執行時,您可以使用 DaemonSet。DaemonSet 中的每個 Pod 所執行的角色都類似於傳統 Unix / POSIX 伺服器上的系統守護程序。DaemonSet 可能對您的叢集運作至關重要,例如,允許該節點存取叢集網路的外掛程式,它可以幫助您管理節點,或者它可以提供不太重要的設施來增強您正在執行的容器平台。您可以在叢集中的每個節點上,或僅在一個子集上執行 DaemonSet(及其 Pod)(例如,僅在安裝了 GPU 的節點上安裝 GPU 加速器驅動程式)。
您可以使用 Job(任務) 和 / 或 CronJob(排程任務) 來定義執行完成然後停止的任務。Job 代表一次性任務,而每個 CronJob 則根據排程重複執行。
本節的其他主題