Comment puis-je déclencher manuellement une tâche planifiée Kubernetes?


Réponses:


187

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

Avec kubectl v1.10.1 + la commande est:

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

Il semble être rétrocompatible avec les anciens clusters car cela fonctionnait pour moi sur la v0.8.x.


3
Assurez-vous de vérifier votre version de kubectl, car à partir du 10/05/18, la version installée via le SDK Google Cloud n'a pas cette commande disponible. gcloud components install kubectlpuis kubernetes.io/docs/tasks/tools/install-kubectl
Scott Jungwirth

18

Vous pouvez créer un travail simple basé sur votre ScheduledJob. 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

Exportez l'un de ces travaux:

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

Ensuite, modifiez un peu le yaml, en effaçant certains champs inutiles et exécutez-le manuellement:

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

1
Juste un petit ajout sur «l'effacement de certains champs inutiles». Kubernetes se plaint des *uidchamps et vous pouvez les supprimer facilement par cette commandesed -i '/uid:.*/d' my_job.yaml
Aleksandr Podkutin

L'hypothèse selon laquelle il y a déjà des emplois dans l'histoire ne tient souvent pas.
Andrew Savinykh

9

EDIT - Juillet 2018: voir la réponse de @ pedro_sland car cette fonctionnalité est désormais implémentée

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

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

Mis à part la création d'un nouvel emploi (comme les autres réponses l'ont suggéré), il n'existe actuellement aucun moyen de le faire. Il s'agit d'une demande de fonctionnalité avec kubernetes maintenant qui peut être suivie ici: https://github.com/kubernetes/kubernetes/issues/47538


7

Malheureusement, aucun des exemples de syntaxe ci-dessus ne fonctionne dans Google Kubernetes Engine (GCP). De plus, les documents GKE eux-mêmes sont erronés. :(

Dans 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>

génial pour résoudre les problèmes de résilience des tâches cron, merci!
lauksas


0

Si vous voulez tester le travail, créer un emploi config de votre Cron Job (ScheduledJob) config et l' exécuter manuellement à l' aide de la commande suivante:

kubectl create -f ./job.yaml

0

Il existe une option pour déclencher la tâche cron manuellement dans cet onglet du tableau de bord k8s

Voir l'image

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.