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.


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

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


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>

ś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

0

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

Zobacz zdjęcie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.