跳至主要内容

啟用叢集代理排程自訂

cattle-cluster-agent 允許啟用 Priority Class 和 Pod Disruption Budget 的自動部署。

當啟用此功能時,所有新佈建的 Node Driver、Custom 和 Imported RKE2 和 K3s 叢集都會在佈建過程中自動部署 Priority Class 和 Pod Disruption Budget。現有叢集可以使用 Rancher UI 或透過在叢集物件上設定特定註解逐步更新此新行為。

此功能預設為停用。

啟用叢集代理排程自訂​

資訊

啟用或停用此功能僅影響新叢集。現有下游叢集不會自動更新。請參閱更新現有叢集。

  1. 在左上角,點擊 ☰ > 全域設定
  2. 選擇 功能旗標
  3. 找到 cluster-agent-scheduling-customization 功能並點擊 ⋮ > Activate

設定全域設定​

您可以透過在 Rancher UI 中更新 cluster-agent-default-priority-class 和 cluster-agent-default-pod-disruption-budget 全域設定來自訂預設的 Priority Class (PC) 和 Pod Disruption Budget (PDB)。請注意,Priority Class 和 Pod Disruption Budget 都有設定限制:

  • 預設 PC 設定的 Value 不能小於負 10 億或大於 10 億。
  • PC 設定的 PreemptionPolicy 必須等於 PreemptLowerPriority 或 Never。
  • 您不能將 PDB minAvailable 和 maxUnavailable 欄位都設定為非零值。
  • PDB minAvailable 必須是非負整數或非負整數百分比(例如 1 或 100%)。
  • PDB maxUnavailable 必須是非負整數或非負整數百分比(例如 1 或 100%)。

更新現有叢集​

資訊

當此功能停用時,您無法修改現有叢集的叢集代理排程自訂欄位。但是,無論功能狀態如何,您始終可以移除設定。

啟用此功能後,您可以透過兩種方式為現有叢集設定排程自訂:

  • 使用 Rancher UI
    • 編輯所需的叢集並導覽至 Cluster Configuration 部分中的 Cluster Agent 標籤。
    • 啟用 Prevent Rancher cluster agent pod eviction 核取方塊。
      • 相關 clusters.provisioning.cattle.io 或 clusters.management.cattle.io 物件上的必要欄位將使用全域設定中設定的值自動設定。
    • 儲存叢集。
  • 使用註解
    • provisioning.cattle.io/enable-scheduling-customization 註解可用於更新叢集,而無需使用 Rancher UI。在設定 Priority Class 和 Pod Disruption Budget 後,此註解將自動從叢集中移除。
      • 此註解的值可以是 true 或 false,以自動新增或移除排程自訂。
      • 對於 Node Driver Provisioned 和 Custom 叢集,在相關的 clusters.provisioning.cattle.io 物件上套用此註解。
      • 對於 Imported 叢集,在相關的 clusters.management.cattle.io 物件上套用此註解。

套用更新的全域設定​

為了防止排程器行為發生意外變更,當 cluster-agent-default-priority-class 和 cluster-agent-default-pod-disruption-budget 全域設定變更時,Rancher 不會更新現有的下游叢集。有兩種方法可以更新現有叢集以使用最新的全域設定:

  • 使用 Rancher UI
    • 設定叢集時,Cluster Configuration 部分的 Cluster Agent 標籤中將顯示一個額外的核取方塊。勾選 Apply global settings for Priority Class and Pod Disruption Budget 核取方塊將在儲存叢集後自動更新 Priority Class 和 Pod Disruption Budget 以符合全域設定。
  • 調整叢集 yaml
    • 您可以使用 kubectl 或 Rancher UI 的「Edit As Yaml」功能手動調整叢集物件中的相關欄位。排程自訂可以在叢集物件的 spec.ClusterAgentDeploymentCustomization.SchedulingCustomization 部分中找到。
    • 或者,可以使用 provisioning.cattle.io/enable-scheduling-customization 註解來移除並重新新增在特定叢集上設定的更新排程自訂欄位。

下游物件​

當為給定叢集啟用此功能時,Rancher 將自動建立兩個下游資源:

  • 將在 cattle-system 命名空間中自動建立名為 cattle-cluster-agent-pod-disruption-budget 的 Pod Disruption Budget。
  • 將自動建立名為 cattle-cluster-agent-priority-class 的 Priority Class。

這些物件由 Rancher 維護,不得修改或刪除。Rancher 伺服器將自動更新這些物件以符合 Cluster 物件上設定的設定,並在不再需要時移除它們。

RBAC 考量​

在下游叢集上啟用此功能之前,叢集管理員應評估其當前的 RBAC 設定,以防止對 cattle-cluster-agent-priority-class 的常見存取。在外部使用者可以存取叢集的情況下(例如將叢集作為服務提供時),建議限制對 cattle-cluster-agent-priority-class 物件的存取,以防止變更或刪除。

對於 cattle-cluster-agent-pod-disruption-budget 物件,不需要進行類似的考慮,因為 Pod Disruption Budget 是命名空間物件。Rancher 將在特權 cattle-system 命名空間中建立 cattle-cluster-agent-pod-disruption-budget。