工作負載
瞭解 Pod,Kubernetes 中最小的可部署運算物件,以及協助您執行它們的更高層級抽象概念。
工作負載是在 Kubernetes 上執行的應用程式。無論您的工作負載是單一元件還是多個協同工作的元件,在 Kubernetes 上,您都會在一組 Pod 內執行它。在 Kubernetes 中,Pod 代表一組在您的叢集上執行的容器。
Kubernetes Pod 具有定義的生命週期。例如,一旦 Pod 在您的叢集中執行,則在該 Pod 執行所在的節點上發生嚴重錯誤,表示該節點上的所有 Pod 都會失敗。Kubernetes 將該層級的失敗視為最終狀態:即使節點稍後變得健康,您也需要建立新的 Pod 才能復原。
然而,為了讓生活更加輕鬆,您不需要直接管理每個 Pod。相反地,您可以使用工作負載資源,代表您管理一組 Pod。這些資源設定控制器,以確保執行正確數量與正確種類的 Pod,以符合您指定的狀態。
Kubernetes 提供多個內建的工作負載資源
- Deployment 與 ReplicaSet(取代舊版資源 ReplicationController)。Deployment 非常適合管理叢集上的無狀態應用程式工作負載,其中 Deployment 中的任何 Pod 都是可互換的,並且可以在需要時更換。
- StatefulSet 可讓您執行一個或多個追蹤某種狀態的相關 Pod。例如,如果您的工作負載持續記錄資料,您可以執行 StatefulSet,將每個 Pod 與 PersistentVolume 匹配。您在該 StatefulSet 的 Pod 中執行的程式碼,可以將資料複寫到相同 StatefulSet 中的其他 Pod,以提高整體彈性。
- DaemonSet 定義提供節點本機設施的 Pod。每次您將節點新增至叢集,且該節點符合 DaemonSet 中的規格時,控制平面就會將該 DaemonSet 的 Pod 排程到新節點上。DaemonSet 中的每個 Pod 執行的工作都類似於傳統 Unix/POSIX 伺服器上的系統常駐程式。DaemonSet 可能對於叢集的運作至關重要,例如執行 叢集網路的外掛程式,它可以協助您管理節點,或者它可以提供增強您正在執行的容器平台的可選行為。
- Job 和 CronJob 提供了不同的方法來定義執行到完成然後停止的工作任務。你可以使用 Job 來定義一個只需執行一次就完成的工作任務。你可以使用 CronJob 根據排程多次執行相同的 Job。
在更廣泛的 Kubernetes 生態系統中,你可以找到提供額外行為的第三方工作負載資源。透過使用自訂資源定義,如果你想要 Kubernetes 核心之外的特定行為,可以加入第三方工作負載資源。例如,如果你想為你的應用程式執行一組 Pod,但除非所有 Pod 都可用才開始工作(可能用於某些高吞吐量的分散式任務),那麼你可以實作或安裝一個提供該功能的擴充套件。
下一步
除了閱讀關於每個用於工作負載管理的 API 種類之外,你還可以閱讀如何執行特定任務
- 使用 Deployment 執行無狀態應用程式
- 以單一執行個體或複寫集的方式執行有狀態應用程式
- 使用 CronJob 執行自動化任務
若要了解 Kubernetes 將程式碼與組態分離的機制,請造訪組態。
有兩個支援概念提供了關於 Kubernetes 如何管理應用程式 Pod 的背景資訊
- 垃圾收集會在叢集中物件的擁有資源被移除後清理這些物件。
- 完成後存活時間控制器會在定義的時間過後移除 Job。
一旦你的應用程式正在執行,你可能會希望透過 Service 或僅針對 Web 應用程式使用 Ingress,使其在網際網路上可用。
上次修改時間為太平洋標準時間 2023 年 7 月 12 日凌晨 1:25:修訂文件首頁 (9520b96a61)