CrashLoopBackOff 或 OOMKilled 状态)是 K8s 运维中最常见的问题之一,只要按步骤排查,很快就能定位到根因。1kubectl get pods -n <你的命名空间>RESTARTS 次数和 STATUS 状态。接着,最关键的一步来了,执行以下命令查看 Pod 的详细事件和退出原因:1kubectl describe pod <一直重启的pod名称> -n <你的命名空间>Events(事件) 和 Last State(上一次退出状态)。这里通常会直接告诉你答案:OOMKilled(Exit Code 137):说明容器内存溢出,被系统强制杀掉了。你的 exporter-kernel-kaf 和 netconf-adapter-dm 看起来像是采集或适配类应用,这类应用在处理大量数据时非常容易出现内存峰值。Error 或其他退出码:说明是应用程序内部报错崩溃了。describe 没看出明显的内存问题,那大概率是应用启动失败。由于 Pod 一直在重启,直接查日志可能只能看到新容器的日志,必须查看上一次崩溃容器的日志:1# 加上 --previous 参数,查看上一次崩溃容器的日志
2kubectl logs <一直重启的pod名称> -n <你的命名空间> --previousConnection refused(连不上数据库/中间件)、Config file not found(缺配置文件)、ModuleNotFoundError(缺依赖)或者 panic(代码崩溃)等关键报错信息。Deployment 或 StatefulSet 的 YAML 文件,调大 resources.limits.memory 的值,然后重新 apply。1resources:
2 limits:
3 memory: "512Mi" # 适当调大内存限制ConfigMap 或 Secret,或者环境变量(env)是否缺失。command 或 args 是否写错,或者 Docker 镜像本身是否有问题(比如缺少前台进程导致容器秒退)。livenessProbe(存活探针)配置的 initialDelaySeconds(初始延迟时间)太短,应用还没完全启动好就被判定为不健康而杀掉。建议适当延长这个时间。
exporter-kernel-kaf
netconf-adapter-dm
一直重启 = 容器启动失败 → 崩溃 → 重启循环(CrashLoopBackOff)
99% 是下面 4 类问题,我按最常见 → 最快解决给你排好。
一、最快定位命令(你现在直接复制执行)
bash
运行
# 1. 看 Pod 状态(确认是不是重启循环)
kubectl get pods | grep -E "exporter-kernel-kaf|netconf-adapter-dm"
# 2. 看崩溃日志(90% 能直接看到错在哪)
kubectl logs -f exporter-kernel-kaf-xxxx-xxxx -p
kubectl logs -f netconf-adapter-dm-xxxx-xxxx -p
# 3. 看事件(为什么重启)
kubectl describe pod exporter-kernel-kaf-xxxx-xxxx
kubectl describe pod netconf-adapter-dm-xxxx-xxxx
重点看:
Error
Exit Code 1/2/137
Connection refused
Permission denied
ConfigMap missing
Secret missing
ImagePullBackOff
二、这两个 Pod 为什么会无限重启?(真实场景)
1)netconf-adapter-dm
这是网络配置适配器,依赖:
连接 控制器 / 管理面 失败
连 ETCD 失败
连 kube-apiserver 失败
配置文件(configmap)缺失 / 错误
权限不足
典型报错:
plaintext
connect: connection refused
dial tcp 127.0.0.1:xxxx: connect: connection refused
2)exporter-kernel-kaf
这是内核监控采集器,依赖:
挂载了宿主机内核路径 /proc/sys 但没权限
特权模式没开(privileged: true)
宿主机内核版本不兼容
缺少挂载卷
典型报错:
plaintext
permission denied
read /proc/kmsg: operation not permitted
三、99% 能解决的 4 个真实 fix(你直接试)
🔥 修复 1:给特权(exporter 必加)
编辑 yaml 加:
yaml
securityContext:
privileged: true
或命令:
bash
运行
kubectl edit deploy exporter-kernel-kaf
🔥 修复 2:netconf-adapter 连不上管理面
检查:
对接的 控制器 IP / 端口是否通
防火墙是否拦截 830 端口(netconf 标准端口)
账号密码 / 密钥是否正确
🔥 修复 3:configmap/secret 配置丢失
bash
运行
kubectl get cm
kubectl get secret
如果这两个 Pod 依赖的配置不见了,直接重启对应 operator 或重新下发配置。
🔥 修复 4:镜像坏了 / 版本不匹配
bash
运行
kubectl rollout restart deploy netconf-adapter-dm
kubectl rollout restart deploy exporter-kernel-kaf
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
厉害