How can I trigger a Kubernetes Scheduled Job manually?

前端 未结 7 507
抹茶落季
抹茶落季 2020-12-07 13:43

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 t

相关标签:
7条回答
  • 2020-12-07 14:02

    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>

    It seems to be backwardly compatible with older clusters as it worked for me on v0.8.x.

    0 讨论(0)
  • 2020-12-07 14:03

    If you want to test the job, create a Job config from your Cron Job (ScheduledJob) config and run it manually using the following command:

    kubectl create -f ./job.yaml
    
    0 讨论(0)
  • 2020-12-07 14:04

    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

    0 讨论(0)
  • 2020-12-07 14:04

    I've created a small cmd utility for convenience to do just that and also suspend and unsuspend cronjobs.

    https://github.com/iJanki/kubecron

    0 讨论(0)
  • 2020-12-07 14:08

    Unfortunately, none of the example syntax 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>
    
    0 讨论(0)
  • 2020-12-07 14:12

    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
    
    0 讨论(0)
提交回复
热议问题