You need to enable JavaScript to run this app. 部署Kubernetes DaemonSet时,单节点资源近乎耗尽无法创建Pod且无可驱逐Pod会发生什么
优惠活动
大模型
产品
解决方案
定价
更多

部署Kubernetes DaemonSet时,单节点资源近乎耗尽无法创建Pod且无可驱逐Pod会发生什么

单节点资源耗尽时DaemonSet Pod创建失败的实际处理逻辑

核心调度行为

  • 目标节点上的待创建DaemonSet Pod会长期停留在Pending状态,不会触发跨节点调度转移
    不同于普通Deployment工作负载的可调度Pod,DaemonSet的Pod调度目标是强绑定到单个匹配节点的:DaemonSet控制器会持续尝试在每个匹配调度规则的节点上拉起对应Pod,一旦遇到节点资源不足,就会直接生成Insufficient cpu/memory/pid类的创建失败事件,全程不会给这个Pod分配其他可用节点作为调度目标。
  • 不会触发节点端的自动资源腾挪动作
    题目场景下节点已经处于资源近乎耗尽的状态,但因为节点上没有可被kubelet驱逐的Pod,kubelet内置的节点压力驱逐机制不会启动——驱逐动作的前提是节点资源压力超过阈值时,主动移除低优先级Pod释放资源,没有可驱逐对象的情况下,kubelet只会持续上报节点资源紧张的状态事件,不会额外触发关机、重启这类极端操作。
  • 集群水平扩容完全无法缓解该类问题
    因为DaemonSet的调度规则是“在所有匹配的节点上各运行一个Pod实例”,新增的集群节点只会对应被创建新的DaemonSet Pod,不会分流原资源耗尽节点的Pod创建需求——就算集群规模扩大数倍,资源耗尽节点上的DaemonSet Pod依然会卡在Pending状态,控制器从设计逻辑上就没有给这类Pod配置替代调度目标的分支。

后续自动处理逻辑

  • DaemonSet控制器会以固定周期(默认15s,可配置)持续重试Pod创建操作
    整个重试过程无中断、无指数退避惩罚:只要后续节点上的可用资源回落到能够满足DaemonSet Pod定义的资源申请阈值,之前卡在Pending的Pod就会被正常拉起,不需要人工手动重建资源耗尽节点上的对应Pod。
  • 单节点的创建失败不会直接触发DaemonSet的整体异常标记
    只要集群内其余匹配调度规则的节点都正常运行了对应DaemonSet Pod,DaemonSet的整体状态就不会被判定为失败,只有通过查询控制器事件流,才能看到单个节点上的Pod创建失败记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 19:36:07