Ich habe folgende Kubernetes Job Konfiguration:
---
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: {}
Wenn ich kubectl create -f dbload-deployment.yml --record
den Job erledige und ein Pod erstellt wird, wird der Docker-Container vollständig ausgeführt und ich erhalte den folgenden Status:
$ 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
Dieser Job ist einmalig und ich muss ihn erneut ausführen können. Wenn ich versuche, es mit kubectl create
Befehl erneut auszuführen, erhalte ich diesen Fehler
$ kubectl create -f dbload-deployment.yml --record
Error from server: error when creating "dbload-deployment.yml": jobs.batch "dbload" already exists
Natürlich kann ich es tun kubectl delete job dbload
und dann rennen, kubectl create
aber ich frage mich, ob ich den Job, der bereits existiert, irgendwie wieder aufwecken kann?
quelle
kubectl replace
löscht den Job, bevor die Fehler beim Neuerstellen auftreten.Sie können den erwähnten Fehler auch vermeiden, indem Sie angeben
metadata: generateName: dbload
statt einfach
name
In diesem Fall hat jeder Auftrag, den Sie mit dieser yaml-Datei senden, einen eindeutigen Namen, der ungefähr so aussieht
dbloada1b2c
. Dann können Sie entscheiden, ob Sie die alten Jobs löschen müssen , müssen dies aber nicht .quelle
kubectl create