记录一次 k8s 节点内存不足的排查过程

背景:前端服务一直报404,查看k8s日志,没发现报错,但是发现pods多次重启。

排查过程:

  1. 查看pods日志,发现日志进不去。
bash 复制代码
kubectrl logs -f -n weave pod-name --tail 100
  1. 查看pod describe
bash 复制代码
kubectl describe po -n weave senseweave-capability-gateway-6c5485f7bf-xxxx
  • Exit Code 为 137:通常表示该容器被 Linux OOM(Out-of-Memory)杀手终止。这通常发生在 Pod 超过了内存限制,或者运行该 Pod 的节点内存不足时。
  • Restart Count 为2,表示最近pod重启了2次
  • 当前pods没有指定 limit 资源

    原因分析:如果pod不指定 limit, 多个pod间会存在资源争抢,并且不指定资源的pod,在oom的时候,会优先被 Terminal 掉。
  1. 查看当前节点的内存使用情况
bash 复制代码
 kubectl top nodes --no-headers | sort -k4 -nr
 # 解释:
 #  --no-headers 不显示表头,
 #  sort -k4 -nr 按照第四列降序排序
 #    -n 按照数值排序
 #    -r 反向排序

23-8 节点的内存已经快满了。

pods 是通过 deployment 部署的,多个节点都有亲和性标签,但是 pod 还是部署到了 23-8 节点上。

分析原因可能是,不指定 limit 导致的

解决办法:

deployment 指定 limit 资源大小,重启 pods 。

相关推荐
喜欢你,还有大家5 小时前
实战演练——wordpress-k8s集群版
云原生·容器·kubernetes
起风了___9 小时前
Jenkins + Kubernetes 多模块微服务一键流水线:从 Maven 打包到滚动发布完整脚本
kubernetes·jenkins
2501_9418814021 小时前
Kubernetes 容器集群资源调度与弹性扩容高可用架构在互联网业务实战经验总结
云原生·容器·kubernetes
究極の法則に通じた野犬21 小时前
k8s设计理念-k8s中哪些服务要部署成StatefulSet哪些部署成Deployment
云原生·容器·kubernetes
wuxingge21 小时前
k8s集群误删node节点,怎么添加回去
云原生·容器·kubernetes
观测云1 天前
Kubernetes CRD 方式配置容器日志采集最佳实践
容器·kubernetes·日志分析
运维-大白同学1 天前
2025最全面开源devops运维平台功能介绍
linux·运维·kubernetes·开源·运维开发·devops
敲上瘾2 天前
【探索实战】:Kurator分布式统一应用分发平台的全面解析与实践指南
分布式·容器·kubernetes·serverless
Connie14512 天前
记一次K8s故障告警排查(Grafna告警排查)
云原生·容器·kubernetes·grafana
谷隐凡二2 天前
Kubernetes主从架构简单解析:基于Python的模拟实现
python·架构·kubernetes