今天要來談談牧場最重要的管理制度 - 飼料分配!就像牧場主要控制每個區域的草料供應量,避免某些貪心的牛隻把所有飼料都吃光,讓其他牛隻餓肚子。在 Kubernetes 的世界裡,這個機制叫做 ResourceQuota,它能確保每個 Project 和 Namespace 都有合理的資源使用限制,維持整個叢集的和諧運作。
ResourceQuota 是 Kubernetes 中控制資源使用的核心機制,在 Rancher 的多租戶環境中更是不可或缺的管理工具。它就像是牧場的飼料配給制度,確保每個租戶都能獲得應有的資源,同時防止資源被某個租戶過度佔用。
在開始實作前,有幾個重要觀念需要先釐清:
Reservation vs Limit 的差異:
request
概念,是調度器用來計算 Pod 應該部署到哪個 Node 的依據重要提醒: Reservation 並不代表系統保證該 Project 至少能使用的資源!實際上填了 Reservation 也不一定用得到,因為可能被其他超過 Request 值的 Pod 佔用。如果某個 Node 上有一堆使用量超過 Request 的 Pod,新部署的 Pod 依然可能只能使用低於 Request 的用量。
為什麼 Project 和 Namespace 都要設定?
設定完 Project Resource Quota 後,一定要設定 Namespace 層級的限制,因為沒設定 Namespace 層級的話,Project 層級也就沒意義了。由於 Project Owner 角色一般不會開放給使用者,所以 Namespace 層級通常也是由 Admin 控管。
登入 Rancher 管理介面,進入 Cluster > Projects/Namespaces
,選擇要設定配額的 Project。
在 Project 設定中找到 Resource Quotas
頁籤:
# Project: backend-project (實際部門)
# Project: ml-project (範例,實際環境可能沒有 ML 部門)
# Project: frontend-project (範例,實際環境可能沒有 Frontend 部門)
在 Rancher 網頁介面的設定步驟:
CPU 配額設定:
2000m
(不填寫 CPU Limit)Memory 配額設定:
8000MiB
(不填寫 Memory Reservation)Storage 配額設定:
10000MiB
(昨天已設定過)Project 設定完成後,進入個別的 Namespace 進行細部配額設定。
進入個別 Namespace,點選 Resource Quotas → Create:
以下為設定範例(實際環境請依需求調整):
development namespace 設定範例:
500m
2000MiB
2000MiB
staging namespace 設定範例:
1000m
4000MiB
4000MiB
production namespace 設定範例:
1000m
4000MiB
4000MiB
重要規劃原則:
在 Namespace 中點選 Limit Ranges → Create,設定容器的預設資源:
Container 預設設定:
10m
(預設極小值,主要滿足必填要求)1000MiB
10m
100MiB
(可選)這樣所有部署到該 Namespace 的 Pod 如果沒有明確指定資源限制,就會自動套用這些預設值。
重要設定說明:
問題 1: Reservation 誤解
很多人以為設定了 Reservation 就保證能使用那麼多資源,實際上 Reservation 只是調度參考。如果 Node 上其他 Pod 用量超標,你的 Pod 一樣可能資源不足。
問題 2: 忘記設定 Namespace 層級
只設定 Project 層級配額是沒用的,一定要設定到 Namespace 層級才會真正生效。這是最常見的設定錯誤。
問題 3: Rolling Update 資源不足
配額設定得剛好夠用,結果 Rolling Update 時因為需要同時存在新舊 Pod 而資源不足,導致部署失敗。配額設定時要把 Rolling Update 需要的額外資源計算進去,不能只設定單一 Pod 需要的量。
問題 4: 自動化管理缺失
手動管理多個租戶的配額設定非常麻煩,特別是當部門數量增加時。強烈建議導入 GitOps 自動化機制。
Cluster 層級監控:
在 Rancher 首頁可以看到 Cluster 整體資源用量,但要注意只有未被 Cordon 且具有 Worker Role 的 Node 資源才會被計算在內。
重要監控原則:
安全閾值建議:
# 資源充足環境
安全閾值: 60% # 保留充足的 Rolling Update 和 Peak 需求空間
# 資源緊張環境
最高閾值: 70% # 超過此閾值就要考慮擴容
# 避免的危險閾值
危險閾值: 85% # 地端環境擴容不易,此閾值過於緊繃
ResourceQuota 使用量檢查:
透過 Rancher 網頁介面檢查配額狀態,因為透過網頁建立的 ResourceQuota 通常不會知道具體的物件名稱。
重要備註:
今天完成了 ResourceQuota 資源配額的全面設定,建立了完整的多租戶資源管理制度。記住 Reservation 只是調度參考,不是資源保證;Project 設定後必須配套設定 Namespace 層級才會生效。
明天我們要先來認識 Cilium CNI 網路魔法師,了解 CNI 的運作原理和設定,為後續的 Network Policy 網路隔離打好基礎!
💡 牧場主小提示:資源配額就像牧場的飼料分配制度,設定太嚴格會餓死牛隻,太寬鬆會浪費資源!建議先從寬鬆的配額開始,觀察一週的使用模式後再逐步收緊。記住:Reservation 是「調度參考值」,Limit 是「最多能用的」,別搞混了!