容器與平台運維 中階
Kubernetes 中 Resource Requests 和 Limits 有什麼差別?如何設定?
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 評分
