容器與平台運維 中階

Kubernetes 中 Resource Requests 和 Limits 有什麼差別?如何設定?

AI 練習作答

Requests vs Limits

Requests(請求量):容器保證能獲得的資源量,Scheduler 根據此值決定將 Pod 排程到哪個節點。

Limits(上限):容器能使用的最大資源量,超過後:

  • CPU:被 throttling(限速),不會被殺死
  • Memory:觸發 OOMKilled,容器被強制終止

設定範例

resources: requests: memory: "128Mi" cpu: "250m" # 250 millicores = 0.25 核 limits: memory: "256Mi" cpu: "500m"

QoS 等級

根據 requests/limits 設定,Kubernetes 自動分配 QoS 等級,決定資源不足時的驅逐優先順序:

QoS 等級 條件 驅逐優先順序
Guaranteed requests == limits 最後被驅逐
Burstable 有 requests,limits > requests 中等
BestEffort 未設定任何 requests/limits 最先被驅逐

HPA(水平自動擴展)

根據 CPU/Memory 使用率自動調整副本數:

kubectl autoscale deployment myapp --cpu-percent=70 --min=2 --max=10

最佳實踐

  • 生產環境必須設置 requests 和 limits
  • 避免 limits.cpu 設置過低導致 throttling 影響效能
  • 使用 VPA(垂直自動擴展)或工具如 Goldilocks 找到合適的資源設定值

✦ AI 模擬面試

輸入你的答案,AI 即時分析精準度與改進空間

登入後即可使用 AI 評分