iT邦幫忙

2026 iThome 鐵人賽

DAY 21
0

沿用 default 裡的 web,這次替 Nginx 加上 CPU 與記憶體額度,避免單一容器毫無限制地吃掉節點資源。

1. 設定 requests 與 limits

下面的 requests 表示容器希望保留的基本資源,limits 則是允許使用的上限。100m 等於十分之一個 CPU 核心,64Mi 約為 64 MiB 記憶體:

kubectl set resources deployment web --requests=cpu=100m,memory=64Mi --limits=cpu=500m,memory=128Mi

這些數字只是練習用,不是 Nginx 的通用建議值。正式環境要根據監控結果與壓力測試調整,不能直接照抄。

2. 等待新 Pod 完成更新

修改資源設定會改動 Deployment 的 Pod 範本,因此 Kubernetes 會建立新 Pod 取代舊 Pod。先等待更新完成,再查看目前的 Pod:

kubectl rollout status deployment/web --timeout=120s
kubectl get pods -l app=web

如果新 Pod 一直停在 Pending,可能是節點已經沒有足夠資源可以滿足 requests。這時先用 kubectl describe pod 查看 Events,不要只看電腦當下似乎還很閒。

3. 確認設定真的套用了

從上一個結果複製一個新 Pod 的完整名稱,把 POD_NAME 換掉。在 Containers 區段中,應該會看到 Requests 與 Limits:

kubectl describe pod POD_NAME

也可以直接查看 Deployment 的完整設定,確認數值已經寫進 Pod 範本:

kubectl get deployment web -o yaml

這次只驗證設定已套用,沒有證明它能承受多少流量。下一篇會加入自動擴縮;開始之前,要先分清楚設定的 requests、limits,以及容器真正使用的即時資源三者差異。

參考:資源請求與限制


上一篇
Day 20
系列文
我的 Pod 又掛了:30 天學會 Kubernetes 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言