web-dev-qa-db-fra.com

Comment déclencher un travail planifié Kubernetes manuellement?

J'ai créé un Job planifié Kubernetes , qui s'exécute deux fois par jour, conformément à son emploi du temps. Cependant, je voudrais le déclencher manuellement à des fins de test. Comment puis-je faire ceci?

71
aknuds1

Le problème # 47538 que @jdf a mentionné est maintenant fermé et cela est maintenant possible. L'implémentation d'origine peut être trouvée ici mais la syntaxe a changé.

Avec kubectl v1.10.1 +, la commande est la suivante:

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

Il semble être rétro-compatible avec les anciens clusters car cela a fonctionné pour moi sur v0.8.x.

115
pedro_sland

Vous pouvez créer un travail simple basé sur votre tâche planifiée. Si vous exécutez déjà un ScheduledJob, il y a des travaux dans l'historique.

kubectl get jobs

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

Exporter l'un de ces emplois:

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

Puis éditez un peu le yaml en effaçant quelques champs inutiles et lancez-le manuellement:

kubectl create -f my_job.yaml
kubectl delete -f my_job.yaml
13
Camil

EDIT - juillet 2018: voir answer de @ pedro_sland car cette fonctionnalité est maintenant implémentée

Ma réponse originale ci-dessous restera correcte pour les anciennes versions de kubectl inférieures à v1.10.1.

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

En plus de créer un nouvel emploi (comme l'ont suggéré d'autres réponses), il n'existe actuellement aucun moyen de le faire. C'est une demande de fonctionnalité dans kubernetes maintenant qui peut être suivie ici: https://github.com/kubernetes/kubernetes/issues/47538

9
jdf

Malheureusement, aucun des exemples de syntaxe ci-dessus ne fonctionne dans Google Kubernetes Engine (GCP). En outre, les documents GKE eux-mêmes sont faux. :(

En Kubernetes 1.10.6.gke-2, la syntaxe de travail est

kubectl create job <your-new-job-name> --from=cronjob/<name-of-deployed-cron-job> -n <target namespace>
4
Joseph Lust

J'ai créé un petit utilitaire cmd pour plus de commodité, mais aussi pour suspendre et suspendre les tâches cron.

https://github.com/iJanki/kubecron

3
iJanki

Si vous souhaitez tester le travail, créez un Job config à partir de votre Cron Job (ScheduledJob) et exécutez-le manuellement à l'aide de la commande suivante:

kubectl create -f ./job.yaml
1
Kamran