What should you do when you’ve developed and installed a cron job for your Kubernetes application, and you need to test it? When writing classic cron jobs in Unix, it’s obvious how to test the job- just manually run the command specified in the cron file. However, it’s not as obvious how to do this in Kubernetes.
We encountered this problem not long ago while setting up a daily PostgreSQL backup job for one of our projects. Triggering a CronJob manually was difficult or impossible in older versions of Kubernetes, but since K8S 1.10 it can be done like this:
kubectl create job --from=cronjob/<name of cronjob> <name of job>
For example, if the name of your cronjob is “pgdump”, then you might run:
kubectl create job --from=cronjob/pgdump pgdump-manual-001
To see a list of cron jobs, run “kubectl get cronjob”.
The job creates a pod that runs to completion. You can review the command output by using kubectl to show pod logs.
Further reading
The official Kubernetes docs are here: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#-em-job-em-
The thread discussing this Kubernetes feature is here: https://github.com/kubernetes/kubernetes/issues/47538
实例配置:
[root@compass-user-hd-master3]:~# kubectl create job tmp-daily-report-job-02 --from=cronjob/job-1119051325-app-v1-0 -n data-infra
NAME AGE
tmp-daily-report-job-02 0s [root@compass-user-hd-master3]:~# kubectl get pod -n data-infra -o wide tmp-daily-report-job-02-49mbv 1/1 Running 0 6s 192.168.73.194 kube-node-192-168-0-246