Kubernetes 上的保留資源
· 閱讀時間約 6 分鐘
最近發現我們在 Azure Kubernetes Service (AKS) 上的 Pod 很容易被驅逐,查了一下才發現原來我們不能用盡 Node 上的所有資源,這篇文章就來看看我們必須留下多少資源給系統吧。
Node Capacity
在 Kubernetes 上執行 Pod 的時候,我們可以指定 Resource Request/Limit 來告訴 K8S 我們的程式需要多少的資源來運行,K8S 會自動幫我們安排到符合條件的節點上,像下面這樣:
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
一個節點的資源量是固定的,稱為 Node Capacity,例如在 AWS 上開 t3.medium 等級的 Node,就會有差不多 4GiB 的記憶體可以使用。但在機器上其實還會有一些不受群集控制的程式在運作 (例如 OS 程式、Kubernetes 本人等等),這時候如果還是按照 Capacity 去分配的話,就可能會發生問題,所以 K8S 提供了 Node Allocatable 這個功能。