下载
中文
注册
断点续训任务被重调度后Pod状态不一致

断点续训任务被重调度后Pod状态不一致

2025/01/26

169

暂无评分
我要评分

问题信息

问题来源产品大类产品子类关键字
官方集群调度断点续训重调度、Pod状态

问题现象描述

在多节点集群环境中下发分布式训练任务,若此时环境资源刚好满足,开启任务重调度且重调度参数“fault-scheduling”为“grace”。此时,如果出现故障将触发重调度,但是任务重调度后会概率性出现一个Pod状态为Running和一个Pod状态为Pending的情况。后续故障恢复后,状态为Pending的Pod依然为Pending。

原因分析

  • 该问题是开源代码中对任务数量的判断存在问题。
  • 当Pod被终止时,若容器中的脚本没有返回非0的值时(即返回0值时),则Pod的状态会显示为Success(K8s机制)。此时该Pod正在释放资源,Volcano调度器会将该Pod(未重启)算作是已经重启且状态为Success。这种情况下,刚好满足Volcano的gang调度插件的机制,先重启的Pod会进入创建阶段。当正在终止的Pod结束并重新拉起时,则会由于资源不足进入Pending状态。
  • 未使用断点续训的脚本。
  • 集群资源不够。

解决措施

  • 执行以下命令,手动删除已运行的Pod。
    kubectl delete pod -n pod所在的namespace pod名称
  • 删除该任务,再重新下发任务。

本页内容