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?
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.
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
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
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>
J'ai créé un petit utilitaire cmd pour plus de commodité, mais aussi pour suspendre et suspendre les tâches cron.