您可以定義節點屬性和自動調度資源設定集,Google Kubernetes Engine (GKE) 會使用這些設定建立節點,以透過 ComputeClasses 執行 Pod。本頁說明 ComputeClass 的運作方式、用途和優點,以及可用的 ComputeClass 類型。
這項資訊適用於下列對象:
- 雲端架構師和平台工程師,希望減少與叢集基礎架構管理相關的額外負擔。
- 應用程式作業人員和 SRE,希望專注於運算工作負載,不必考慮基礎架構。
關於 ComputeClass 和叢集自動調度資源
ComputeClass 是一組節點屬性和自動調度資源設定,以 Kubernetes API 物件的形式存在於 GKE 叢集中。您可以在部署的任何 Kubernetes 工作負載中選取 ComputeClass。GKE 叢集自動資源調度功能會使用 ComputeClass 中的屬性,為工作負載建立節點。
平台工程師可以使用 ComputeClass 為各種工作負載設定基礎架構,確保每個新節點都能根據應用程式的特定需求進行最佳化。ComputeClass 可提升 GKE 自動調度資源的速度和彈性,並提供宣告式方法,讓您在叢集中設定基礎架構選項。詳情請參閱「使用 ComputeClass 的優點」一節。
只有 ComputeClass 才能提供特定 GKE 功能,例如:
- 備援運算優先順序:在 ComputeClass 中定義多組基礎架構設定,並根據偏好設定設定優先順序。在擴縮期間,如果無法使用最偏好的設定,GKE 會改用下一個設定。
- 主動遷移至優先順序較高的節點:設定完成後,GKE 會自動將備援優先順序清單中優先順序較低的節點,換成優先順序較高的節點。因此,即使建立工作負載時沒有該硬體,Pod 最終仍會在 ComputeClass 中最偏好的節點上執行。
- GKE Standard 中的 Autopilot:在 GKE Autopilot 模式中執行工作負載,即可使用 Autopilot 功能,例如容器最佳化運算平台和以 Pod 為準的計費方式,即使在 Standard 叢集中也適用。GKE 會管理這些節點和工作負載,讓您在任何叢集中都能享有 Autopilot 模式的優點。
ComputeClasses 的優點
ComputeClass 可為平台管理員和營運人員提供下列優點:
- 提升資源取得能力:ComputeClass 可擴充 GKE 叢集自動調度資源的功能。ComputeClass 功能 (例如備援優先順序和節點合併參數) 可降低 Pod 停滯在 Pending 狀態的風險,並增加可用於擴充節點的選項範圍。
- 宣告式平台層級設定:平台工程師可透過 ComputeClass,以宣告方式說明各種工作負載類型的節點設定。GKE 自動調度功能會管理節點和節點集區的建立和設定。您可以將 ComputeClasses 整合至 CI/CD 管道,確保平台佈建的基礎架構一致。
- 減少管理負擔:ComputeClass 可簡化大規模管理基礎架構和工作負載的複雜度。平台工程師會宣告基礎架構類別,應用程式運算子則會在工作負載中選取相關類別。GKE 會管理擴縮、節點硬體設定,並套用 taint、容許條件和標籤。
關於 ComputeClass 自訂資源
ComputeClass 是 Kubernetes 自訂資源。您可以在資訊清單檔案中定義 ComputeClass 的規格,並在叢集中建立該規格,方式與定義及建立 Kubernetes 工作負載資源 (例如 Deployment 和 Service) 類似。
下列資訊清單定義名為 n4
的 ComputeClass:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: n4
spec:
nodePoolAutoCreation:
enabled: true
priorities:
- machineFamily: n4
- machineFamily: n2
whenUnsatisfiable: DoNotScaleUp
當 Pod 選取這個 ComputeClass 時,GKE 會在建立新節點時執行下列操作:
- GKE 會建立使用 N4 機型系列的節點。
- 如果 N4 機器系列無法使用,GKE 會改為建立使用 N2 機器系列的節點。
- 如果 N2 機型系列無法使用,GKE 會等待資源可用,再排程 Pod。
您可以使用 ComputeClass 控制節點的各種設定,包括加速器、節點系統設定、節點位置,以及硬體資源無法使用時 GKE 的備援行為。如要進一步瞭解 ComputeClass 的所有可用設定,請參閱 ComputeClass CustomResourceDefinition。
在工作負載中選取 ComputeClass
如要為 GKE 工作負載使用 ComputeClass,請在工作負載資訊清單中選取 ComputeClass,方法是使用 cloud.google.com/compute-class
標籤的節點選取器。
以下 Deployment 資訊清單範例會選取 ComputeClass:
將 COMPUTE_CLASS
換成叢集中現有的 ComputeClass 名稱。舉例來說,您可以從「關於 ComputeClass 自訂資源」一節指定 n4
ComputeClass,也可以指定autopilot
ComputeClass 內建資源。
工作負載規格中的節點設定
在 GKE Standard 中,您可以透過 GKE Autopilot 叢集和節點自動佈建功能,在 Pod 中使用節點選取器,建立具有特定屬性的節點,例如機器系列、Spot VM 或 GPU 和 TPU。您可以集中定義這些需求,不必為每個工作負載新增個別選取器。
關於預設套用 ComputeClass
您可以設定 GKE,將 ComputeClass 預設套用至未選取特定 ComputeClass 的 Pod。您可以為特定命名空間或整個叢集定義預設 ComputeClass。如要進一步瞭解如何使用預設類別設定叢集或命名空間,請參閱「依預設將 ComputeClass 套用至 Pod」。
下表說明將 ComputeClass 設為命名空間或叢集預設值的效果:
預設 ComputeClass 的影響 | |
---|---|
命名空間層級預設值 |
|
叢集層級預設值 |
|
如果 GKE 將命名空間層級的預設 ComputeClass 套用至 Pod,該 Pod 就不會啟用叢集層級的預設 ComputeClass,因為 GKE 會將命名空間層級預設類別的節點選取器新增至 Pod。
叢集層級預設 ComputeClass
啟用叢集層級的預設 ComputeClass 時,名為 default
的 ComputeClass
物件會定義叢集的節點自動調度規則。如果叢集已有名為 default
的 ComputeClass,GKE 會使用該 ComputeClass 設定叢集。如果叢集沒有名為 default
的自訂 ComputeClass,GKE 的行為會如同套用下列 ComputeClass
規則:
spec:
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
根據預設,GKE 不會套用任何備援行為,也不會變更自動調整節點的設定。如要預設將特定屬性套用至自動調整節點,您必須部署名為 default
的自訂 ComputeClass。
設定預設叢集層級運算類別時,請考量下列事項:
- 為避免 Pod 停滯在
Pending
狀態,請將spec.whenUnsatisfiable
欄位設為ScaleUpAnyway
。即使 Pod 要求使用不在叢集層級預設類別優先順序規則中的 Compute Engine 機器系列,GKE 也能根據這個值建立節點。如要強制這些 Pod 使用預設 ComputeClass 中的機器系列,請將這個欄位設為DoNotScaleUp
。 - 如要限制對
default
ComputeClass 的變更,請使用 RBAC ClusterRole,限制對名為default
的ComputeClass
資源執行 update、patch、delete 和 create 作業。 - 如要變更叢集自動調度資源的預設節點合併參數,請使用 ComputeClass 規格中的
spec.autoscalingPolicy
欄位。您在叢集層級預設 ComputeClass 中為這個欄位指定的參數,會套用至叢集中的所有節點。詳情請參閱「設定節點整併的自動調度參數」。
後續步驟
- 瞭解內建的 ComputeClass
- 瞭解自訂 ComputeClass
- 閱讀 ComputeClass CustomResourceDefinition
- 部署 ComputeClass 並在工作負載中選取