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 數。
- 如果虛擬機器 (VM) 提供 8 GB 的記憶體,且節點支援最多 30 個 Pod,則 AKS 會保留 20 MB * 最大 30 Pod + 50 MB = 650 MB 供 kube 保留。
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 中基本排程器功能的最佳做法。