Kubernetes Webサイトの例に基づいたジョブ定義があります。
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-timeout-6
spec:
activeDeadlineSeconds: 30
completions: 1
paralleism: 1
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: Perl
command: ["exit", "1"]
restartPolicy: Never
このジョブを1回実行し、失敗した場合は再起動しないようにします。 comand exit 1 kubernetesは、新しいPodを実行して、activeDeadlineSecondsタイムアウトに達するまでexit 0コードを取得しようとします。どうすればそれを回避できますか? kubernetesでビルドコマンドを実行してコンパイルを確認します。コンパイルが失敗した場合、0以外の終了コードが返されます。再度コンパイルを実行したくありません。
出来ますか?どうやって?
1回限りのコマンドランナーが必要な場合は、ジョブが成功するかアクティブな期限に達するまでジョブがコマンドを実行しようとするため、おそらく裸のポッドを作成する必要があります。
テンプレートからポッドを作成するだけです:
apiVersion: v1
kind: Pod
metadata:
name: pi
spec:
containers:
- name: pi
image: Perl
command: ["exit", "1"]
restartPolicy: Never
backoffLimit: 0
これは、コントローラーに0回の再試行を指示します。デフォルトは6
残念ながら、現在、ジョブポッドが失敗したときに新しいポッドを再スポーンすることを防ぐ方法はありませんが、kubernetesコミュニティは解決策に取り組んでいます。
「バックオフポリシーと失敗したポッドの制限」 https://github.com/kubernetes/community/pull/58