工作負載
瞭解 Pods,這是 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)