在 k8s 中可以對pod 中每個容器使用的資源進行限制,當前主要爲 cpu 和 內存。主要有 requests 和 limits 兩個配置。
requests 用於 scheduler 階段,表示要運行容器所需的最小資源。 limits 用於限制容器最多可以使用的資源,如果 cpu 超過這個限制,容器中進程的調度會被系統內核減少,如果內存超過限制,容器可能被 cgroup 殺死。
limits 中的 cpu 限制對應於 docker 中的 --cpu-shares, cpu 佔用百分比。k8s 將1個 cpu 分成 1000 個shares,與 cgroup 將 cpu 分成 1024 個 shares 略有差別。