<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cgroup on Hi, I'm Vimiix</title><link>https://www.vimiix.com/tags/cgroup/</link><description>Recent content in Cgroup on Hi, I'm Vimiix</description><generator>Hugo</generator><language>cn-zh</language><copyright>Vimiix Yao; All rights reserved</copyright><lastBuildDate>Thu, 30 Apr 2026 12:04:28 +0000</lastBuildDate><atom:link href="https://www.vimiix.com/tags/cgroup/index.xml" rel="self" type="application/rss+xml"/><item><title>NPD 容器持续 OOM，Pod 重建时引发节点高负载根因分析</title><link>https://www.vimiix.com/posts/2026-04-30-npd-pod-delete-cause-cpu-high-load/</link><pubDate>Thu, 30 Apr 2026 12:04:28 +0000</pubDate><guid>https://www.vimiix.com/posts/2026-04-30-npd-pod-delete-cause-cpu-high-load/</guid><description>&lt;h2 id="摘要">摘要&lt;/h2>
&lt;p>K8S 生产集群的 worker 节点在 NPD（Node Problem Detector）Pod 被重建时，出现 CPU sys% 飙升、load 暴涨、同节点其他 Pod 延迟明显变大的现象。经过完整排查，根因定位为：NPD 的 memory limit 配置过小（200Mi），导致容器频繁触发 memcg OOM；OOM 后 containerd 通过 cleanupAfterDeadShim 路径调用 runc delete 清理容器，而 runc 1.1.12 中存在两处错误丢弃缺陷以及 RemovePaths 重试窗口过短的问题，致使每次容器退出后其 cgroup 目录均未被正确清理；经过约一个月的累积，单个 NPD Pod 下残留了 8147 个子 cgroup 目录；当该 Pod 被删除重建时，kubelet 的 PodContainerManager.Destroy 对全部残留子 cgroup 进行递归遍历和 rmdir 操作，在 cgroup v1 的全局锁 cgroup_mutex 上形成严重争抢，最终导致节点 sys% 飙高并波及同节点所有 Pod。本文完整记录从现象到根因的排查过程，并结合源码分析给出修复方案。&lt;/p></description></item></channel></rss>