等待kubernetes作业使用命令行完成任一次失败/成功

问题描述 投票:4回答:1

等待kubernetes工作完成的最佳方法是什么?我注意到了很多建议:

kubectl wait --for=condition=complete job/myjob

但我认为这只有在工作成功的情况下才有效。如果它失败了,我必须做类似的事情:

kubectl wait --for=condition=failure job/myjob

有没有办法等待这两个条件使用等待?如果没有,等待工作成功或失败的最佳方式是什么?

kubernetes wait jobs kubectl kubernetes-jobs
1个回答
1
投票

kubectl wait --for=condition=<condition name正在等待一个特定的条件,所以afaik目前无法指定多个条件。

我的解决方法是使用oc get --wait,如果目标资源更新,--wait将关闭命令。我将使用status监视oc get --wait部分工作,直到更新statusstatus部分的更新意味着Job已完成某些状态条件。

如果作业成功完成,那么status.conditions.type会立即更新为Complete。但是如果作业失败,那么无论restartPolicyOnFailure还是Never,工作窗都会自动重启。但是我们可以认为这个工作是Failed状态,如果不是在第一次更新后更新为Complete

查看我的测试证据如下。

  • Job yaml测试成功完成
    # vim job.yml
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
    spec:
      parallelism: 1
      completions: 1
      template:
        metadata:
          name: pi
        spec:
          containers:
          - name: pi
            image: perl
            command: ["perl",  "-wle", "exit 0"]
          restartPolicy: Never
  • 如果成功完成工作,它会告诉你Complete
    # oc create -f job.yml &&
      oc get job/pi -o=jsonpath='{.status}' -w &&
      oc get job/pi -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed" 

    job.batch/pi created
    map[startTime:2019-03-09T12:30:16Z active:1]Complete
  • 用于测试的作业yaml失败完成
    # vim job.yml
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
    spec:
      parallelism: 1
      completions: 1
      template:
        metadata:
          name: pi
        spec:
          containers:
          - name: pi
            image: perl
            command: ["perl",  "-wle", "exit 1"]
          restartPolicy: Never
  • 如果第一份工作更新不是Failed,它会告诉你Complete。在删除现有作业资源后进行测试。
    # oc delete job pi
    job.batch "pi" deleted

    # oc create -f job.yml &&
      oc get job/pi -o=jsonpath='{.status}' -w &&
      oc get job/pi -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed" 

    job.batch/pi created
    map[active:1 startTime:2019-03-09T12:31:05Z]Failed

我希望它对你有所帮助。 :)

© www.soinside.com 2019 - 2024. All rights reserved.