Mam następującą konfigurację zadania Kubernetes:
---
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: {}
Po wykonaniu kubectl create -f dbload-deployment.yml --record
zadania i utworzeniu zasobnika pojemnik Docker działa do końca i otrzymuję ten 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
Ta praca jest jednorazowa i muszę ją ponownie uruchomić. Jeśli spróbuję go uruchomić ponowniekubectl create
polecenia, pojawia się ten błąd
$ kubectl create -f dbload-deployment.yml --record
Error from server: error when creating "dbload-deployment.yml": jobs.batch "dbload" already exists
Oczywiście, że mogę to zrobić, kubectl delete job dbload
a potem uciec, kubectl create
ale zastanawiam się, czy uda mi się jakoś obudzić pracę, która już istnieje?
źródło
kubectl replace
usuwa zadanie przed wystąpieniem błędów podczas jego odtwarzania.Możesz także uniknąć wspomnianego błędu, określając go
metadata: generateName: dbload
zamiast po prostu
name
W takim przypadku każde zadanie przesłane za pomocą tego pliku yaml będzie miało unikalną nazwę, która będzie wyglądać mniej więcej tak
dbloada1b2c
. Następnie możesz zdecydować, czy chcesz usunąć stare zadania, ale nie będziesz musiał tego robić.źródło
kubectl create