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.

pedro_sland
la source
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
Camil
la source
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

jdf
la source
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>
Joseph Lust
la source
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
Kamran
la source
0

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

Voir l'image

Borja Garcia
la source