Jak ręcznie wyzwolić zaplanowane zadanie Kubernetes?

Odpowiedzi:

187

Problem # 47538 , o którym wspomniał @jdf, jest teraz zamknięty i jest to teraz możliwe. Oryginalną implementację można znaleźć tutaj, ale składnia uległa zmianie.

W kubectl v1.10.1 + polecenie brzmi:

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

Wydaje się, że jest wstecznie kompatybilny ze starszymi klastrami, ponieważ działał dla mnie w wersji 0.8.x.

pedro_sland
źródło
3
Koniecznie sprawdź swoją wersję kubectl, ponieważ od 10.05.18 wersja zainstalowana za pośrednictwem Google Cloud SDK nie ma tego polecenia. gcloud components install kubectlnastępnie kubernetes.io/docs/tasks/tools/install-kubectl
Scott Jungwirth
18

Możesz utworzyć proste zadanie na podstawie swojego ScheduledJob. Jeśli wykonałeś już ScheduledJob, w historii są zadania.

kubectl get jobs

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

Eksportuj jedno z tych zadań:

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

Następnie edytuj trochę yaml, usuwając niepotrzebne pola i uruchom go ręcznie:

kubectl create -f my_job.yaml
kubectl delete -f my_job.yaml
Camil
źródło
1
Tylko mały dodatek o "skasowaniu niektórych niepotrzebnych pól". Kubernetes narzeka na *uidpola i możesz je łatwo usunąć tym poleceniemsed -i '/uid:.*/d' my_job.yaml
Aleksandr Podkutin
Założenie, że w historii są już miejsca pracy, często nie jest aktualne.
Andrew Savinykh
9

EDIT - lipiec 2018: zobacz @ pedro_sland za odpowiedzi jako funkcja ta została wdrożona

Moja pierwotna odpowiedź poniżej pozostanie poprawna dla starszych wersji kubectl starszych niż v1.10.1

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

Poza utworzeniem nowej pracy (jak sugerowały inne odpowiedzi), obecnie nie ma na to żadnego sposobu. Jest to teraz żądanie funkcji w kubernetes, które można śledzić tutaj: https://github.com/kubernetes/kubernetes/issues/47538

jdf
źródło
7

Niestety żadna z powyższych przykładowych składni nie działa w Google Kubernetes Engine (GCP). Ponadto sami doktorzy GKE są w błędzie. :(

W Kubernetes 1.10.6.gke-2działająca składnia to

kubectl create job <your-new-job-name> --from=cronjob/<name-of-deployed-cron-job> -n <target namespace>
Joseph Lust
źródło
świetnie rozwiązuje problemy z odpornością zadań cron, dzięki!
lauksas
0

Jeśli chcesz przetestować zadanie, stworzyć Job config z Cron Job (ScheduledJob) config i uruchomić go ręcznie za pomocą następującego polecenia:

kubectl create -f ./job.yaml
Kamran
źródło
0

Istnieje opcja ręcznego wyzwalania zadania cron w tej zakładce na pulpicie nawigacyjnym K8s

Zobacz zdjęcie

borja garcia
źródło