跳至主要内容

CPU 固定

自 v1.4.0 起可用

Harvester 支援虛擬機 CPU 固定。要使用此功能,您必須先在節點上啟用 CPU Manager,然後在建立虛擬機時啟用 CPU 固定。

Kubernetes CPU Manager​

CPU Manager 功能改善了 Kubernetes 叢集中的 CPU 資源分配,確保具有嚴格效能需求的工作負載獲得穩定且可預測的 CPU 資源。這對於高效能和對延遲敏感的應用程式尤為重要。

當啟用 CPU Manager 時,Harvester 使用 static CPU Manager 政策。此政策管理一個共享的 CPU 池,該池最初包含節點上的所有 CPU,並具有以下設定:

  • 請求完整 CPU 核心(例如 CPU: "2")的 Guaranteed 服務品質 (QoS) 類別中的 Pod 會被分配專用 CPU。這些 CPU 被「固定」到 Pod,並從共享 CPU 池中移除。
  • Burstable 和 BestEffort QoS 類別中的 Pod 共享池中剩餘的 CPU。

共享 CPU 池的計算​

Harvester 根據 GKE 公式為系統層級操作保留 CPU 資源,其中 systemReserved 和 kubeReserved 值以 2:3 的比率分配。

範例(具有 16 個 CPU 核心的節點):

systemReserved: 408 millicores
kubeReserved: 612 millicores

在此範例中,大約 15 個核心(14980 millicores)可用於工作負載。

當 Guaranteed QoS 類別中的虛擬機(Pod)請求 4 個 CPU 時,會為該虛擬機專用 4 個核心。其他 QoS 類別中的 Pod 共享共享池中剩餘的 11 個核心。

啟用和停用 CPU Manager​

當您啟用 CPU Manager 時,Harvester 會將 CPU Manager 政策設定為 static。當您停用該功能時,Harvester 會將 CPU Manager 政策切換回 none。

您必須分別在每個節點上啟用或停用 CPU Manager。

  1. 在 Harvester UI 上,前往 Hosts。

  2. 在清單中找到節點,然後選擇 ⋮ > Enable CPU Manager 或 Disable CPU Manager。

請給 Harvester 一些時間以套用相應的 CPU Manager 政策。

enable-cpu-manager disable-cpu-manager

限制​

  • CPU Manager 無法在見證節點上啟用。

  • CPU Manager 必須分別在每個管理節點上啟用或停用。您必須等待操作完成後才能開始另一個操作。

  • 在對應節點上停用 CPU Manager 之前,必須先停止啟用 CPU 固定的虛擬機。

在新虛擬機上啟用 CPU 固定​

  1. 驗證一個或多個節點上已啟用 CPU Manager。
important

確保至少一個節點已啟用 CPU Manager。否則,虛擬機在啟動後將卡在 unschedulable 狀態。如需更多資訊,請參閱節點親和性規則。

  1. 前往 Virtual Machines。

  2. 點擊 Create。

create-vm

  1. 在 Advanced Options 標籤上,選擇 Enable CPU Pinning。

vm-advanced-options

  1. 點擊 Save。

啟用 CPU 固定會將 dedicatedCpuPlacement: true 新增到虛擬機設定 (YAML) 中的 .spec.template.spec.domain.cpu。當 dedicatedCpuPlacement 設定為 true 時,CPU 和記憶體資源請求會自動設定為與限制相符,以確保滿足 Guaranteed QoS 的標準。

由於請求和限制相同,CPU 和記憶體資源超額分配設定不適用於啟用 CPU 固定的虛擬機。

備註

要在現有虛擬機上使用 CPU 固定,您必須在啟用該功能並儲存變更後重新啟動虛擬機。

虛擬機即時遷移​

啟用 CPU 固定的虛擬機只有在目標節點上啟用 CPU Manager 時才能遷移。

升級​

升級節點時,Harvester 會排空所有 Pod 並將虛擬機即時遷移到另一個節點。為了避免中斷升級程序,每當使用啟用 CPU 固定的虛擬機時,請確保在其他節點上啟用 CPU Manager 並且有足夠的可用資源。