Ich habe einen geplanten Kubernetes-Job erstellt , der gemäß seinem Zeitplan zweimal täglich ausgeführt wird. Ich möchte es jedoch zu Testzwecken manuell auslösen. Wie kann ich das machen?
Ich habe einen geplanten Kubernetes-Job erstellt , der gemäß seinem Zeitplan zweimal täglich ausgeführt wird. Ich möchte es jedoch zu Testzwecken manuell auslösen. Wie kann ich das machen?
Antworten:
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.
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
*uid
Felder und Sie können sie leicht mit diesem Befehl entfernensed -i '/uid:.*/d' my_job.yaml
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
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-2
lautet die funktionierende Syntax
kubectl create job <your-new-job-name> --from=cronjob/<name-of-deployed-cron-job> -n <target namespace>
Ich habe ein kleines Cmd-Dienstprogramm erstellt, um dies zu vereinfachen und Cronjobs auszusetzen und die Suspendierung aufzuheben.
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
Es gibt eine Option, um den Cron-Job manuell über diese Registerkarte im k8s-Dashboard auszulösen
gcloud components install kubectl
dann kubernetes.io/docs/tasks/tools/install-kubectl