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