工作負載

瞭解 Pods,這是 Kubernetes 中最小的可部署計算物件,以及有助於執行它們的高階抽象。

工作負載是在 Kubernetes 上執行的應用程式。無論你的工作負載是單個元件還是協同工作的多個元件,在 Kubernetes 上你都可以在一組Pod 中執行它。在 Kubernetes 中,Pod 表示叢集中一組正在執行的容器

Kubernetes Pod 具有明確定義的生命週期。例如,一旦 Pod 在你的叢集中執行,那麼執行該 Pod 的節點上的嚴重故障意味著該節點上的所有 Pod 都會失敗。Kubernetes 將該級別的故障視為最終狀態:即使節點後來恢復健康,你仍需要建立新的 Pod 才能恢復。

然而,為了大大簡化工作,你不需要直接管理每個 Pod。相反,你可以使用工作負載資源來代表你管理一組 Pod。這些資源配置控制器,確保執行正確數量的正確型別的 Pod,以匹配你指定的狀態。

Kubernetes 提供了幾個內建的工作負載資源:

  • DeploymentReplicaSet(取代舊版資源 ReplicationController)。Deployment 非常適合管理叢集中的無狀態應用工作負載,其中 Deployment 中的任何 Pod 都是可互換的,並且可以在需要時替換。
  • StatefulSet 允許你執行一個或多個以某種方式跟蹤狀態的相關 Pod。例如,如果你的工作負載持久記錄資料,你可以執行一個 StatefulSet,將每個 Pod 與一個PersistentVolume 匹配。你的程式碼,在 StatefulSet 的 Pod 中執行,可以將資料複製到同一 StatefulSet 中的其他 Pod,以提高整體彈性。
  • DaemonSet 定義了提供節點本地功能的 Pod。每次你向叢集新增一個與 DaemonSet 規範匹配的節點時,控制平面都會為該 DaemonSet 在新節點上排程一個 Pod。DaemonSet 中的每個 Pod 執行的工作類似於經典 Unix / POSIX 伺服器上的系統守護程序。DaemonSet 對於叢集的操作可能至關重要,例如執行叢集網路的外掛,它可能有助於你管理節點,或者它可以提供增強你正在執行的容器平臺的可選行為。
  • JobCronJob 提供了定義執行至完成然後停止的任務的不同方式。你可以使用 Job 來定義一個只執行一次並完成的任務。你可以使用 CronJob 來根據時間表多次運行同一個 Job。

在更廣泛的 Kubernetes 生態系統中,你可以找到提供額外功能的第三方工作負載資源。使用自定義資源定義,如果你想要 Kubernetes 核心不具備的特定行為,你可以新增第三方工作負載資源。例如,如果你想為你的應用程式執行一組 Pod,但只有當所有 Pod 都可用時才開始工作(可能用於某些高吞吐量的分散式任務),那麼你可以實現或安裝提供該功能的擴充套件。

下一步

除了閱讀每種用於工作負載管理的 API 型別之外,你還可以閱讀如何執行特定任務:

要了解 Kubernetes 將程式碼與配置分離的機制,請訪問配置

還有兩個支援概念提供了 Kubernetes 如何管理應用程式 Pod 的背景資訊:

一旦你的應用程式執行起來,你可能希望透過Service將其暴露在網際網路上,或者,對於僅限 Web 應用程式,使用Ingress將其暴露。

最後修改於 2023 年 7 月 12 日太平洋標準時間上午 1:25:修訂文件主頁 (9520b96a61)