---
title: 使用Volcano和Ascend Operator组件场景下，业务面故障的任务所有Pod的Status全部变为Failed，任务无法触发无条件重试重调度-昇腾社区
description: 使用Volcano和Ascend Operator组件场景下，业务面故障的任务所有Pod的Status全部转变为Failed，任务无法发生无条件重试重调度。
keywords: 业务面故障;Pod状态为Failed;无条件重试重调度
url: https://www.hiascend.com/document/caselibrary/detail/mindxdl_0033
section: (其他)
---

# 使用Volcano和Ascend Operator组件场景下，业务面故障的任务所有Pod的Status全部变为Failed，任务无法触发无条件重试重调度-昇腾社区

URL: https://www.hiascend.com/document/caselibrary/detail/mindxdl_0033
描述: 使用Volcano和Ascend Operator组件场景下，业务面故障的任务所有Pod的Status全部转变为Failed，任务无法发生无条件重试重调度。
关键词: 业务面故障;Pod状态为Failed;无条件重试重调度

昇腾文档 [了解详情](https://www.hiascend.com/document)

故障案例 [了解详情](https://www.hiascend.com/document/caselibrary)

使用Volcano和Ascend Operator组件场景下，业务面故障的任务所有Pod的Status全部变为Failed，任务无法触发无条件重试重调度

使用Volcano和Ascend Operator组件场景下，业务面故障的任务所有Pod的Status全部变为Failed，任务无法触发无条件重试重调度

2025/01/26

823

问题信息

| 问题来源 | 产品大类 | 产品子类 | 关键字 |
| --- | --- | --- | ---|
| 官方 | 集群调度 | 断点续训 | 业务面故障、Pod状态为Failed、无条件重试重调度 |

#### 问题现象描述

使用Volcano和Ascend Operator组件场景下，业务面故障的任务所有Pod的Status全部转变为Failed，任务无法发生无条件重试重调度。

#### 原因分析

当前Volcano在业务面故障的任务所有Pod的Status全部转变为Failed时，会将任务设置为失败状态，默认不会拉起无条件重试重调度。

#### 解决措施

用户可自行修改Volcano源码和任务yaml，在所有Pod的Status全部转变为Failed后会发生无条件重试故障重调度。

1. 修改开源Volcano开源代码pkg/controllers/job/state/running.go，增加IgnoreAction。

```
func (ps *runningState) Execute(action v1alpha1.Action) error {
     switch action {
     case v1alpha1.RestartJobAction:
          return KillJob(ps.job, PodRetainPhaseNone, func(status *vcbatch.JobStatus) bool{
              status.State.Phase = vcbatch.Restarting
              status.RetryCount+﹢
              return true
          })
     case v1alpha1.AbortJobAction:
          return KillJob(ps.job, PodRetainPhasesoft, func(status *vcbatch.Jobstatus) bool {
              status.State.Phase = vcbatch.Aborting
              return true
          })
     case v1alpha1.TerminateJobAction:
          return KillJob(ps.job, PodRetainPhasesoft, func(status *vcbatch.Jobstatus) bool {
              status.State.Phase = vcbatch.Terminating
              return true
          })
     case v1alpha1.CompleteJobAction:
          return Kil1Job(ps.job, PodRetainPhaseSoft, func(status *vcbatch.JobStatus) bool {
              status.State.Phase =vcbatch.Completing
              return true
          })
     case v1alpha1.IgnoreAction:        //增加case v1alpha1.IgnoreAction代码
          return nil
default:
```
2. 修改开源Volcano开源代码vendor/volcano.sh/apis/pkg/apis/bus/v1alpha1/actions.go，增加IgnoreAction。

```
IgnoreAction Action = "Ignore"
```
3. 修改任务yaml中spec字段。以a800_vcjob.yaml为例，修改示例如下。

```
apiVersion: batch.volcano.sh/v1alpha1  
kind: Job                              
metadata:
  name: mindx-dls-test         
  labels:
    ring-controller.atlas: ascend-910   
    fault-scheduling: "force"       
...
spec:
  minAvailable: 1               
  schedulerName: volcano
  policies:
    - event: PodFailed            #增加event设置忽略PodFailed
      action: Ignore              #增加action设置忽略PodFailed
...
```

本页内容

- 问题信息
- 问题现象描述
- 原因分析
- 解决措施
