同一節點可能同時執行許多應用,如果沒有資源規畫,某個程式突然大量消耗運算能力,就可能影響其他工作。Kubernetes 讓我們為容器設定 requests 與 limits,分別表達排程時考量的資源需求,以及執行期間允許使用的資源上限。
排程器會參考請求量與節點可分配容量,決定 Pod 能否放到某個節點。CPU 的一千個毫核心相當於一個核心,因此一百個毫核心代表十分之一核心。記憶體常用 Mi 或 Gi 表示,設定時要留意單位,避免數量看似相近卻差距很大。
CPU 超過限制時通常會受到節流,程式可能變慢;記憶體超過限制時,則可能被系統終止。兩種資源的處理方式不同,不能把它們都理解成單純降速。限制設得太低,即使程式沒有錯誤,也可能持續發生效能或穩定性問題。
請求量設得過高會浪費可排程空間,過低則可能讓節點承受過大壓力。合理數值應參考量測與負載測試,並保留必要餘裕。下一篇會先套用一組教學數值,再從資源描述確認設定位置,理解宣告與實際用量並不相同。
參考:Pod 與容器的資源管理