跳至主要内容

資源超額分配

Harvester 支援針對 CPU、記憶體和儲存的資源超載百分比進行全域設定。透過設定 overcommit-config,即使實體資源已被完全使用,也能允許排程額外的虛擬機器。

Harvester 允許你在運算節點上超額分配 CPU 和 RAM。這允許你增加在雲端上執行的實例數量,但代價是降低實例的效能。運算服務預設使用以下比率:

  • CPU 分配比率:1600%
  • RAM 分配比率:150%
  • 儲存分配比率:200%
備註

此功能尚不支援傳統的記憶體超額分配或記憶體氣球 (memory ballooning)。換句話說,虛擬機器實例使用的記憶體一旦分配後就無法歸還。

設定全域設定 overcommit-config​

使用者可以按照以下步驟修改全域 overcommit-config,變更後將套用到每個新建立的虛擬機器。

  1. 前往 Advanced > Settings 頁面。

overcommit page

  1. 找到 overcommit-config 設定。
  2. 設定所需的 CPU、記憶體和儲存比率。

overcommit panel

為單一虛擬機器設定超額分配​

在需要為個別虛擬機器進行特定設定而不影響全域設定的情況下,你可以透過直接修改對應虛擬機器規格上的 spec.template.spec.domain.resources.limits.<memory|cpu> 值來輕鬆實現此目的。

vm overcommit config

為系統開銷保留更多記憶體​

預設情況下,Harvester 會從分配給虛擬機器的記憶體中保留一定數量的系統管理開銷記憶體。在大多數情況下,這不會造成任何問題。然而,某些作業系統(例如 Windows 2022)會請求比保留更多的記憶體。

為了解決此問題,Harvester 在 VirtualMachine 自訂資源上提供了一個註解 harvesterhci.io/reservedMemory,讓你可以指定要保留的記憶體量。例如,如果你決定為虛擬機器的系統開銷保留 200 MiB,請新增 harvesterhci.io/reservedMemory: 200Mi。

 apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
annotations:
+ harvesterhci.io/reservedMemory: 200Mi
kubevirt.io/latest-observed-api-version: v1
kubevirt.io/storage-observed-api-version: v1alpha3
network.harvesterhci.io/ips: '[]'
...
...

為什麼我的虛擬機器排程不均勻?​

虛擬機器的排程取決於 kube-scheduler 的底層行為。我們有一篇專門的文章解釋詳細資訊。如果你想了解更多,請查看:Harvester 知識庫:VM 排程。