欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > k8s pod内存驱逐问题解决

k8s pod内存驱逐问题解决

2025/10/11 4:01:07 来源:https://blog.csdn.net/litaimin/article/details/139901761  浏览:    关键词:k8s pod内存驱逐问题解决

背景:突然收到 web 无法访问告警,然后发现前段应用pod状态为Evicted,证明pod是被驱逐了

排查过程:
1、查看pod状态:
kubectl get pods

kubectl get pods -A | grep 0/1web-nginx-865674789f-c7bv4  0/1   Evicted       0   25h   <none>  192.168.3.10  <none>web-nginx-865674789f-ggb27  0/1   Evicted       0   25h   <none>  192.168.3.10  <none>web-nginx-865674789f-fwp94  0/1   Evicted       0   25h   <none>  192.168.3.10  <none>web-nginx-865674789f-djj46  0/1   Evicted       0   25m   <none>  192.168.3.10  <none>

2、查看pod事件日志:
kubectl describe pods web-nginx-xxx

从日志上可以看出来是内存不足导致了驱逐

Events:Type     Reason     Age                From               Message----     ------     ----               ----               -------Warning  Evicted    2m (x1 over 2m)    kubelet            The node was low on resource: [MemoryPressure].

3、排查节点内存监控,发现利用率在50%,没理由会导致内存不足

4、思考内存驱逐的原理
4.1 K8S通过kubelet来配置pod的驱逐参数,我们检查下驱逐阈值

如果没有配置,则使用默认值# 硬性驱逐条件
evictionHard:memory.available: "200Mi"nodefs.available: "10%"nodefs.inodesFree: "5%"imagefs.available: "15%"
# 软性驱逐条件
evictionSoft:memory.available: "300Mi"nodefs.available: "15%"imagefs.available: "20%"
# 软性驱逐条件的宽限期
evictionSoftGracePeriod:memory.available: "1m"nodefs.available: "1m"imagefs.available: "1m"
# 驱逐Pod前的最大宽限期
evictionMaxPodGracePeriod: 60
#驱逐开始前等待资源压力状态稳定的时间
evictionPressureTransitionPeriod: "5m"

硬性驱逐和软性驱逐的区别:

  • 硬性驱逐是当资源达到或超过设定的硬性驱逐阈值时,Kubelet立即执行驱逐操作。硬性驱逐的特点是直接且无延迟。
  • 软性驱逐是在资源使用达到设定的软性驱逐阈值后,给Pod一个宽限期(Grace Period)。如果在宽限期结束后资源使用仍然没有降低,Kubelet才会驱逐Pod。

4.2 查看node可用内存
kubectl describe node

Allocatable:cpu:                15400mephemeral-storage:  1043358208Kihugepages-1Gi:      0hugepages-2Mi:      0memory:             63242364Ki  #可分配60G内存pods:               253

可分配内存为60G,而服务器内存为100G,
和现场同学确认,问题出现前由于内存占用很高,做过一次在线扩容。

故障复盘:故障原因为前期内存资源不足后,虚拟机采用在线扩容内存的方式,服务器没有重启,并且K8S的kubelet服务也没有重启,获取到的内存配置仍然是60G,所以当主机内存达到60G的时候出现pod由于内存不足产生驱逐。

至于监控,node-exporter可以动态获取主机物理资源,所以过于依赖监控却忽略了检查kubelet。

优化方案:对node内存和kubelet可分配内存做对比,如果相差大于1G则触发告警

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词