啟用叢集代理排程自訂
cattle-cluster-agent 允許啟用 Priority Class 和 Pod Disruption Budget 的自動部署。
當啟用此功能時,所有新佈建的 Node Driver、Custom 和 Imported RKE2 和 K3s 叢集都會在佈建過程中自動部署 Priority Class 和 Pod Disruption Budget。現有叢集可以使用 Rancher UI 或透過在叢集物件上設定特定註解逐步更新此新行為。
此功能預設為停用。
啟用叢集代理排程自訂
啟用或停用此功能僅影響新叢集。現有下游叢集不會自動更新。請參閱更新現有叢集。
- 在左上角,點擊 ☰ > 全域設定
- 選擇 功能旗標
- 找到
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 以符合全域設定。
- 設定叢集時,Cluster Configuration 部分的 Cluster Agent 標籤中將顯示一個額外的核取方塊。勾選
- 調整叢集 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。