理解Kubernetes驱逐算法:节点内存不足时Pod选择疑问
Kubernetes节点内存压力下的Pod驱逐判断
场景描述
现有一节点内存为4GB,初始内存使用情况如下:
| Pod | 内存请求 | 内存限制 | 内存使用 |
|---|---|---|---|
| 1 | 2.0 GiB | 3.0 GiB | 1.0 GiB |
| 2 | 2.0 GiB | 3.0 GiB | 1.0 GiB |
| 空闲 | 0.0 GiB | 0.0 GiB | 2.0 GB |
此时内存空闲,无Pod被驱逐。当两个Pod运行起来后,内存使用情况变为:
| Pod | 内存请求 | 内存限制 | 内存使用 |
|---|---|---|---|
| 1 | 2.0 GiB | 3.0 GiB | 3.0 GiB |
| 2 | 2.0 GiB | 3.0 GiB | 2.0 GiB |
此时Kubernetes驱逐算法被触发,需要判断驱逐Pod1还是Pod2。
驱逐逻辑分析
Kubelet的Pod驱逐选择核心看资源超额占用的比例,优先驱逐对节点资源超额占用更严重的Pod,因为这类Pod驱逐后能释放更多超出请求的资源,快速缓解节点压力。
具体到该场景:
- Pod1的内存请求为2GiB,实际使用3GiB,超出请求量1GiB,超额比例为50%(
(3-2)/2) - Pod2的内存请求为2GiB,实际使用刚好等于请求量,超额比例为0%
节点总内存仅4GB,当前总内存使用量达5GiB,已严重超配。此时Kubelet会优先驱逐Pod1——驱逐它能释放3GiB内存,直接将节点内存使用量降至2GiB,有效缓解内存压力。
如果多个Pod的超额占用比例相同,才会进一步参考QoS等级、Pod优先级等其他规则,但本场景中Pod1的超额占比明显更高,优先级最高。
内容的提问来源于stack exchange,提问作者meallhour
相关产品推荐
相关产品推荐

