Saya memiliki konfigurasi Pekerjaan Kubernetes berikut:
---
apiVersion: batch/v1
kind: Job
metadata:
name: dbload
creationTimestamp:
spec:
template:
metadata:
name: dbload
spec:
containers:
- name: dbload
image: sdvl3prox001:7001/pbench/tdload
command: ["/opt/pbench/loadTpcdsData.sh", "qas0063", "dbc", "dbc", "1"]
restartPolicy: Never
imagePullSecrets:
- name: pbenchregkey
status: {}
Ketika saya melakukan kubectl create -f dbload-deployment.yml --record
pekerjaan dan pod dibuat, wadah Docker berjalan ke selesai dan saya mendapatkan status ini:
$ kubectl get job dbload
NAME DESIRED SUCCESSFUL AGE
dbload 1 1 1h
$ kubectl get pods -a
NAME READY STATUS RESTARTS AGE
dbload-0mk0d 0/1 Completed 0 1h
Pekerjaan ini adalah satu kali perjanjian dan saya harus bisa memutarnya kembali. Jika saya mencoba menjalankannya kembali dengan kubectl create
perintah saya mendapatkan kesalahan ini
$ kubectl create -f dbload-deployment.yml --record
Error from server: error when creating "dbload-deployment.yml": jobs.batch "dbload" already exists
Tentu saja saya bisa melakukannya kubectl delete job dbload
dan kemudian berlari kubectl create
tetapi saya bertanya-tanya apakah saya dapat membangunkan kembali pekerjaan yang sudah ada?
sumber
kubectl replace
menghapus pekerjaan sebelum mengalami kesalahan saat membuatnya kembali.Anda juga dapat menghindari kesalahan yang Anda sebutkan dengan menentukan
metadata: generateName: dbload
bukannya sederhana
name
Dalam hal ini, setiap pekerjaan yang Anda kirimkan dengan file yaml ini akan memiliki nama unik yang akan terlihat seperti
dbloada1b2c
. Kemudian Anda dapat memutuskan apakah Anda perlu menghapus pekerjaan lama, tetapi Anda tidak harus melakukannya.sumber
kubectl create