记录一次 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 。

相关推荐
oMcLin5 分钟前
如何在RHEL 9上配置并优化Kubernetes 1.23高可用集群,提升大规模容器化应用的自动化部署与管理?
kubernetes·自动化·php
ghostwritten13 分钟前
Kubernetes 网络模式深入解析?
网络·容器·kubernetes
原神启动11 小时前
K8S(七)—— Kubernetes Pod 基础概念与实战配置
云原生·容器·kubernetes
不想画图1 小时前
Kubernetes(五)——rancher部署和Pod详解
linux·kubernetes·rancher
大都督老师1 小时前
配置 containerd 使用镜像加速器拉取 Docker Hub 镜像
容器·kubernetes·k8s
木童66212 小时前
Kubernetes 操作管理完全指南:从陈述式到声明式,覆盖全生命周期
云原生·容器·kubernetes
不想画图13 小时前
Kubernetes(三)——组网概念和基础操作指令
云原生·容器·kubernetes
weixin_4624462316 小时前
K8s 集群部署基础:Linux 三节点 SSH 互信(免密登录)配置指南
linux·kubernetes·ssh
Fortune_yangyang17 小时前
Kubernetes 操作管理
云原生·容器·kubernetes
AllFiles17 小时前
Kubernetes PVC 扩容全流程实战:从原理到操作详解
后端·kubernetes