I've created a Kubernetes Scheduled Job, which runs twice a day according to its schedule. However, I would like to trigger it manually for testing purposes. How can I do this?
9 Answers
The issue #47538 that @jdf mentioned is now closed and this is now possible. The original implementation can be found here but the syntax has changed.
With kubectl v1.10.1+ the command is:
kubectl create job --from=cronjob/<cronjob-name> <job-name> -n <namespace-name>
It seems to be backwardly compatible with older clusters as it worked for me on v0.8.x.

- 3,422
- 6
- 38
- 76

- 4,765
- 1
- 16
- 16
-
3Be sure to check your version of kubectl, as of 5/10/18 the version installed via Google Cloud SDK doesn't have this command available. `gcloud components install kubectl` then https://kubernetes.io/docs/tasks/tools/install-kubectl/ – Scott Jungwirth May 15 '18 at 17:24
-
It works also in Openshift, even as old as 3.11 (just replace `kubectl` with `oc`). – mirekphd Sep 21 '21 at 08:51
-
2.. and the inverse operation is: `kubectl [oc] delete job
` – mirekphd Oct 07 '21 at 18:43 -
4it's not working with an error `error: unknown object type *v1beta1.CronJob` ` > kubectl version Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"clean", BuildDate:"2021-11-17T15:48:33Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"darwin/amd64"} ` – Sungguk Lim Jan 03 '22 at 07:41
-
1If you getting an error like this one --> "no kind "CronJob" is registered for version "batch/v1" in scheme "k8s.io/kubectl/pkg/scheme/scheme.go:28" <-- make sure your kubectl version is up to date (21+) – Illidan Feb 03 '22 at 08:38
-
does this run the job, or just create it as a thing that can be run via another command? – Anentropic Oct 28 '22 at 08:16
-
its stupid that you need delete job and recreate it to trigger ♂️ – QkiZ Jan 24 '23 at 11:51
You can create a simple job based on your ScheduledJob. If you already run a ScheduledJob, there are jobs in history.
kubectl get jobs
NAME DESIRED SUCCESSFUL AGE
hello-1477281595 1 1 11m
hello-1553106750 1 1 12m
hello-1553237822 1 1 9m
Export one of these jobs:
kubectl get job hello-1477281595 -o yaml > my_job.yaml
Then edit the yaml a little bit, erasing some unnecessary fields and run it manually:
kubectl create -f my_job.yaml
kubectl delete -f my_job.yaml

- 7,800
- 2
- 25
- 28
-
1Just small addition about "erasing some unnecessary fields". Kubernetes is complaining about `*uid` fields and you can remove them easily by this command `sed -i '/uid:.*/d' my_job.yaml` – Aleksandr Podkutin Sep 18 '18 at 11:05
-
Assumption that there are already jobs in the history often does not hold. – Andrew Savinykh Jan 13 '19 at 20:37
Unfortunately, none of the example syntaxes above works in Google Kubernetes Engine (GCP). Also, the GKE docs themselves are wrong.
In Kubernetes 1.10.6.gke-2
, the working syntax is:
kubectl create job <your-new-job-name> --from=cronjob/<name-of-deployed-cron-job> -n <target namespace>

- 1,373
- 4
- 13
- 28

- 19,340
- 7
- 85
- 83
kubectl create job --from=cronjob/<cron-job-name> <job-name> -n <namespace>
you can use the to delete job execution at any time kubectl delete job <job-name> -n <namespace>
if you want to see the list of corn jobs available use kubectl get cronjobs -n <namespace>

- 606
- 10
- 17
EDIT - July 2018: see @pedro_sland's answer as this feature has now been implemented
My original answer below will remain correct for older versions of kubectl less than v1.10.1
========================================================================
Aside from creating a new job (as the other answers have suggested), there is no current way to do this. It is a feature request in with kubernetes now that can be tracked here: https://github.com/kubernetes/kubernetes/issues/47538

- 699
- 11
- 21
There is an option to trigger the cron job manually whithin this tab in k8s dashboard

- 5,753
- 72
- 57
- 129

- 141
- 2
- 3
-
Great! This is helpful espeically for Minikube users who want to debug and play with cronjobs (like me) :) – ch271828n Oct 08 '20 at 12:43
If you can use tools beyond kubectl
, the K9s CLI is a wonderful tool that has, among other features, the trigger command that allow you to trigger cronjobs.
To do that, enter the K9s interface, search for your cronjobs using the command :cronjobs
, select the one you want to trigger and type t
.
Under the hood it probably creates a Job
using the CronJob
configuration, just like this answer suggested.

- 6,214
- 3
- 30
- 43
I've created a small cmd utility for convenience to do just that and also suspend and unsuspend cronjobs.

- 41
- 4