共用方式為


Azure Kubernetes Service 中的節點資源保留專案 (AKS)

在本文中,您將瞭解 Azure Kubernetes Service (AKS) 中的節點資源保留。

資源保留

AKS 會使用節點資源來協助節點作為叢集的一部分運作。 此使用方式可能會導致節點的總資源與 AKS 中可指派的資源不一致。

AKS 會在每個節點上保留兩種類型的資源,CPU記憶體,以維護節點效能和功能。 當節點的資源變得更大時,資源保留也會隨著管理使用者部署 Pod 的需求增加而成長。 請記住,您無法變更節點上的資源保留。

CPU 保留項目

保留的 CPU 取決於節點類型和叢集組態,這可能會導致因執行額外功能而減少可配置 CPU。 下表顯示 CPU 保留項目,以 millicores 為單位:

主機上的 CPU 核心 單核心 2 個核心 4 個核心 8 核心 16 核心 32 個核心 64 個核心
Kube 保留的 CPU (millicores) 60 100 140 180 260 420 740

記憶體保留項目

在 AKS 中,保留的記憶體是由兩個值的總和所組成:

AKS 1.29 和更新版本

  • 根據預設,kubelet精靈具有 memory.available < 100 Mi 收回規則。 此規則可確保節點隨時至少有 100 Mi 可配置。 當主機低於該可用記憶體閾值時,kubelet 會觸發其中一個執行中 Pod 的終止,並釋放主機電腦上的記憶體。

  • 記憶體保留率,依據 20 MB * 節點支持的最大 Pod 數 + 50 MB總系統記憶體資源的 25% 兩者之間較小的值來設定。

    範例:

    • 如果虛擬機器 (VM) 提供 8 GB 的記憶體,且節點支援最多 30 個 Pod,則 AKS 會保留 20 MB * 最大 30 Pod + 50 MB = 650 MB 供 kube 保留。 Allocatable space = 8 GB - 0.65 GB (kube-reserved) - 0.1 GB (eviction threshold) = 7.25 GB or 90.625% allocatable.
    • 如果 VM 提供 4 GB 的記憶體,且節點支援最多 70 個 Pod,AKS 會保留 25% * 4 GB = 1000 MB 供 kube 保留使用,因為其小於 20 MB * 70 Max Pods + 50 MB = 1450 MB

    如需詳細資訊,請參閱在 AKS 叢集中設定每個節點的最大 Pod 數

1.29 之前的 AKS 版本

  • kubelet 精靈 預設具有 memory.available < 750 Mi 收回規則。 此規則可確保節點隨時至少有 750 Mi 可配置。 當主機低於該可用的記憶體閾值時,kubelet 會觸發其中一個執行中的 Pod 終止,並在主電腦上釋放記憶體。
  • kubelet 精靈可正常運作的記憶體保留迴歸速率 (kube 保留)。
    • 前 4 GB 記憶體的 25%
    • 後續 4 GB 記憶體 (最多 8 GB) 的 20%
    • 後續 8 GB 記憶體 (最多 16 GB) 的 10%
    • 後續 112 GB 記憶體 (最多 128 GB) 的 6%
    • 超過 128 GB 的任何記憶體的 2%

注意

AKS 會為不屬於計算記憶體之 Windows 節點中的系統進程保留額外的 2 GB。

記憶體和 CPU 配置規則的設計目的是:

  • 讓代理程式節點保持狀況良好,包括對叢集健全狀態至關重要的一些裝載系統 Pod。
  • 導致節點報告的可配置記憶體和 CPU 少於其不屬於 Kubernetes 叢集一部分時所報告的可配置記憶體和 CPU。

例如,如果節點提供 7 GB,則會報告 34% 的記憶體無法配置,包括 750 Mi 硬式收回閾值。

0.75 + (0.25*4) + (0.20*3) = 0.75 GB + 1 GB + 0.6 GB = 2.35 GB / 7 GB = 33.57% reserved

除了 Kubernetes 本身的保留,基礎節點作業系統也會保留大量 CPU 和記憶體資源來維護作業系統功能。

如需相關聯的最佳做法,請參閱 AKS 中基本排程器功能的最佳做法

下一步