Wie kann ich einen geplanten Kubernetes-Job manuell auslösen?

Antworten:

185

Die Ausgabe # 47538 , die erwähnte @jdf ist jetzt geschlossen , und das ist jetzt möglich. Die ursprüngliche Implementierung finden Sie hier, aber die Syntax hat sich geändert.

Mit kubectl v1.10.1 + lautet der Befehl:

kubectl create job --from=cronjob/<cronjob-name> <job-name>

Es scheint abwärtskompatibel mit älteren Clustern zu sein, da es für mich unter v0.8.x funktioniert hat.

pedro_sland
quelle
3
Überprüfen Sie unbedingt Ihre Version von kubectl. Ab dem 10.05.18 ist in der über Google Cloud SDK installierten Version dieser Befehl nicht verfügbar. gcloud components install kubectldann kubernetes.io/docs/tasks/tools/install-kubectl
Scott Jungwirth
18

Sie können einen einfachen Job basierend auf Ihrem ScheduledJob erstellen. Wenn Sie bereits einen ScheduledJob ausführen, befinden sich Jobs im Verlauf.

kubectl get jobs

NAME               DESIRED   SUCCESSFUL   AGE
hello-1477281595   1         1            11m
hello-1553106750   1         1            12m
hello-1553237822   1         1            9m

Exportieren Sie einen dieser Jobs:

kubectl get job hello-1477281595 -o yaml > my_job.yaml

Bearbeiten Sie dann das Yaml ein wenig, löschen Sie einige unnötige Felder und führen Sie es manuell aus:

kubectl create -f my_job.yaml
kubectl delete -f my_job.yaml
Camil
quelle
1
Nur eine kleine Ergänzung zum Thema "Löschen einiger unnötiger Felder". Kubernetes beschwert sich über *uidFelder und Sie können sie leicht mit diesem Befehl entfernensed -i '/uid:.*/d' my_job.yaml
Aleksandr Podkutin
Die Annahme, dass es bereits Jobs in der Geschichte gibt, gilt oft nicht.
Andrew Savinykh
9

BEARBEITEN - Juli 2018: Siehe die Antwort von @ pedro_sland, da diese Funktion jetzt implementiert wurde

Meine ursprüngliche Antwort unten bleibt für ältere Versionen von kubectl unter v1.10.1 korrekt

================================================== ======================

Abgesehen von der Erstellung eines neuen Jobs (wie in den anderen Antworten vorgeschlagen) gibt es derzeit keine Möglichkeit, dies zu tun. Es handelt sich um eine Funktionsanforderung bei kubernetes, die jetzt hier verfolgt werden kann: https://github.com/kubernetes/kubernetes/issues/47538

jdf
quelle
7

Leider funktioniert keine der oben genannten Beispielsyntaxen in Google Kubernetes Engine (GCP). Auch die GKE-Dokumente selbst sind falsch. :((

In Kubernetes 1.10.6.gke-2lautet die funktionierende Syntax

kubectl create job <your-new-job-name> --from=cronjob/<name-of-deployed-cron-job> -n <target namespace>
Joseph Lust
quelle
Es ist großartig, Probleme mit der Ausfallsicherheit von Cron-Jobs zu beheben, danke!
Lauksas
0

Wenn Sie den Job testen wollen, einen erstellen Job Config von Ihrer Cron - Job (ScheduledJob) config und führen Sie es manuell mit dem folgenden Befehl:

kubectl create -f ./job.yaml
Kamran
quelle
0

Es gibt eine Option, um den Cron-Job manuell über diese Registerkarte im k8s-Dashboard auszulösen

Siehe Bild

Borja Garcia
quelle