Kubernetes/Jobs,CronJob
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Experiments with jobs.
CLI
# Delete completed jobs kubectl.exe -n dev delete job $(kubectl.exe -n dev get job -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
Self terminating jobs-selfTerminate.yml
one time off Jobs. Includes a CronJob task, that's manage a pod with RBAC permissions to remove old jobs.
--- apiVersion: batch/v1 kind: Job metadata: name: job-ttl-zero namespace: dev spec: # ttlSecondsAfterFinished: 100 # requires enabling TTLAfterFinished on min v1.12 ttlSecondsAfterFinished: 0 # delete straight after completion template: spec: containers: - name: perl image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never --- apiVersion: batch/v1 kind: Job metadata: name: job-activedeadlinedeconds namespace: dev spec: backoffLimit: 2 activeDeadlineSeconds: 120 template: spec: containers: - name: perl image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never --- apiVersion: batch/v1beta1 kind: CronJob metadata: name: cron-delete-jobs namespace: dev spec: schedule: "*/2 * * * *" successfulJobsHistoryLimit: 2 failedJobsHistoryLimit: 2 jobTemplate: spec: template: spec: containers: - name: kubectl-runner image: wernight/kubectl command: ["sh", "-c", "kubectl -n dev get jobs | awk '$4 ~ /[2-9]d$/ || $3 ~ 1' | awk '{print $1}' | xargs kubectl -n dev delete job"] restartPolicy: Never serviceAccountName: delete-jobs --- apiVersion: v1 kind: ServiceAccount metadata: name: delete-jobs namespace: dev labels: k8s-app: delete-jobs --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: delete-jobs subjects: - kind: ServiceAccount name: delete-jobs namespace: dev roleRef: kind: ClusterRole name: delete-jobs apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: delete-jobs labels: k8s-app: delete-jobs rules: - apiGroups: [""] resources: # - namespaces - pods verbs: ["list","delete"] - apiGroups: ["batch"] resources: - jobs verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
When applied to minikube 1.15.2
kubectl.exe apply -f jobs-selfTerminate.yml job.batch/job-ttl-zero created job.batch/job-activedeadlinedeconds created cronjob.batch/cron-delete-jobs created serviceaccount/delete-jobs created clusterrolebinding.rbac.authorization.k8s.io/delete-jobs created clusterrole.rbac.authorization.k8s.io/delete-jobs created NAME COMPLETIONS DURATION AGE job.batch/cron-delete-jobs-1568245320 1/1 8s 2m1s job.batch/cron-delete-jobs-1568245440 0/1 1s 1s NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE cronjob.batch/cron-delete-jobs */2 * * * * False 1 2s 8m5s