經過幾次嘗試,我做到了這一點,並解決了基本問題(類似於OP發佈的內容)。此配置可確保job-1
在job-2
開始之前完成。如果job-1
失敗,則job-2
容器未啓動。我仍然需要重試和失敗處理,但基本工作。希望這將幫助其他人:
apiVersion: v1
kind: Pod
metadata:
name: sequential-job
spec:
initContainers:
- name: job-1
image: busybox
# runs for 15 seconds; echoes job name and timestamp
command: ['sh', '-c', 'for i in 1 2 3; do echo "job-1 `date`" && sleep 5s; done;']
- name: job-2
image: busybox
# runs for 15 seconds; echoes job name and timestamp
command: ['sh', '-c', 'for i in 1 2 3; do echo "job-2 `date`" && sleep 5s; done;']
# I don't really need the 'containers', but syntax requires
# it so, I'm using it as a place where I can report the
# completion status
containers:
- name: job-done
image: busybox
command: ['sh', '-c', 'echo "job-1 and job-2 completed"']
restartPolicy: Never
更新
相同的配置上面也有工作規範內部工作原理:
apiVersion: batch/v1
kind: Job
metadata:
name: sequential-jobs
spec:
template:
metadata:
name: sequential-job
spec:
initContainers:
- name: job-1
image: busybox
command: ['sh', '-c', 'for i in 1 2 3; do echo "job-1 `date`" && sleep 5s; done;']
- name: job-2
image: busybox
command: ['sh', '-c', 'for i in 1 2 3; do echo "job-2 `date`" && sleep 5s; done;']
containers:
- name: job-done
image: busybox
command: ['sh', '-c', 'echo "job-1 and job-2 completed"']
restartPolicy: Never
豆莢可以有「init容器」,它在「主」容器啓動之前運行。但我不知道這是否也適用於喬布斯。如果是這樣,job1可以作爲init容器運行,job2作爲主容器運行。見http://kubernetes.io/docs/user-guide/production-pods/#handling-initialization –
我還沒有嘗試過,但它似乎是一個很好的選擇。謝謝@MarcSluiter –
Init容器也適用於工作 – baloo