You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本周两次Kubernetes Pod因网络问题崩溃,附节点与Pod事件详情

我来帮你梳理下这个Kubernetes Pod网络崩溃问题的前因后果,再一步步给出排查思路和解决办法:

问题根源拆解

从你提供的节点事件日志,能清晰看到完整的故障传导链:

Warning OOMKilling 44m kernel-monitor, gke-iagree-cluster-1-main-pool-5632d628-wgzr Memory cgroup out of memory: Kill process 1560920 (runc:[2:INIT])
Warning TaskHung 31m kernel-monitor, gke-iagree-cluster-1-main-pool-5632d628-wgzr INFO: task dockerd:1883293 blocked for more than 300 seconds.
Warning Rebooted 30m kubelet, gke-iagree-cluster-1-main-pool-5632d628-wgzr Node gke-iagree-cluster-1-main-pool-5632d628-wgzr has been rebooted

首先节点发生内存耗尽(OOM),内核杀死了容器运行时关键进程runc:[2:INIT],直接破坏了容器运行环境的稳定性;紧接着dockerd进程被阻塞超过5分钟,说明容器服务已经彻底异常;最终节点触发自动重启,但重启后kubelet未能正确获取PodCIDR,导致Kubenet网络插件初始化失败,进而引发Pod的网络就绪告警,Pod被强制重建。

排查步骤
  • 验证节点PodCIDR分配状态
    执行命令查看节点的PodCIDR是否正常分配:

    kubectl describe node gke-iagree-cluster-1-main-pool-5632d628-wgzr | grep PodCIDR
    

    如果输出为空,说明kube-controller-manager没有成功给节点分配网段。

  • 检查kube-controller-manager日志
    查看集群中kube-controller-manager的运行日志,排查是否存在PodCIDR分配失败的报错,比如CIDR地址池耗尽、权限不足等问题。

  • 排查节点内存压力
    查看节点当前内存使用情况,确认是否存在持续内存过载:

    # 在节点本地执行
    free -h
    # 或者通过kubectl远程查看
    kubectl top node gke-iagree-cluster-1-main-pool-5632d628-wgzr
    
  • 检查容器运行时状态
    在节点上确认docker和runc服务是否正常:

    systemctl status docker
    systemctl status runc
    # 查看docker日志
    journalctl -u docker -f
    
解决建议
  1. 手动修复PodCIDR并重启kubelet
    如果节点PodCIDR为空,先手动分配集群可用的网段(替换成你集群CIDR池中的有效网段):

    kubectl patch node gke-iagree-cluster-1-main-pool-5632d628-wgzr -p '{"spec":{"podCIDR":"10.244.XX.XX/24"}}'
    

    然后重启节点上的kubelet服务:

    systemctl restart kubelet
    
  2. 缓解节点内存压力

    • 检查节点上所有Pod的资源请求和限制配置,清理或调整超额占用内存的Pod;
    • 清理节点上无用的容器、镜像和缓存:
      docker system prune -af
      
    • 如果是节点硬件规格不足,考虑升级节点配置,或者调整集群调度策略,避免高内存Pod集中调度到同一节点。
  3. 修复容器运行时稳定性

    • 升级runc和docker到与Kubernetes版本兼容的稳定版本,避免已知的OOM或进程阻塞bug;
    • 给dockerd配置合理的内存限制,编辑/etc/docker/daemon.json添加内存参数(根据节点实际情况调整值):
      {
        "memory": "4g",
        "exec-opts": ["native.cgroupdriver=systemd"],
        "storage-driver": "overlay2"
      }
      
      保存后重启docker服务:
      systemctl restart docker
      
  4. 配置节点OOM监控与自动恢复
    搭建Prometheus+Alertmanager监控节点内存使用率,设置阈值告警;同时可以配置Pod驱逐策略,当节点内存不足时自动驱逐低优先级Pod,避免OOM导致节点崩溃。

内容的提问来源于stack exchange,提问作者PaulMB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:27:05