Runc breaks pods when CPU requests aren't multiples of 10
4 months ago
- #containerd
- #cgroup
- #kubernetes
- Pod创建因containerd对4096m CPU限制的非确定性计算(409600或410000微秒)而间歇性失败。
- runc始终计算为410000微秒,当containerd选择409600时导致不匹配,引发内核拒绝。
- 问题表现为节点特异性:当containerd选择409600的节点会卡死,后续所有Pod创建均失败。
- 调查显示containerd将毫核转换为微秒时存在非确定性行为,与runc的固定舍入方式不同。
- 关键影响:非确定性Pod调度、需人工干预的节点瘫痪、Amazon EKS集群生产事故。
- 根本原因:containerd与runc的CPU配额计算缺乏一致性,需确保确定性行为。