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

相关推荐
木鱼时刻10 小时前
容器与 Kubernetes 基本概念与架构
容器·架构·kubernetes
chuanauc20 小时前
Kubernets K8s 学习
java·学习·kubernetes
庸子1 天前
基于Jenkins和Kubernetes构建DevOps自动化运维管理平台
运维·kubernetes·jenkins
李白你好1 天前
高级运维!Kubernetes(K8S)常用命令的整理集合
运维·容器·kubernetes
Connie14511 天前
k8s多集群管理中的联邦和舰队如何理解?
云原生·容器·kubernetes
伤不起bb2 天前
Kubernetes 服务发布基础
云原生·容器·kubernetes
别骂我h2 天前
Kubernetes服务发布基础
云原生·容器·kubernetes
weixin_399380692 天前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes
斯普信专业组3 天前
K8s环境下基于Nginx WebDAV与TLS/SSL的文件上传下载部署指南
nginx·kubernetes·ssl
&如歌的行板&3 天前
如何在postman中动态请求k8s中的pod ip(基于nacos)
云原生·容器·kubernetes