Difference between revisions of "Kubernetes/Jobs,CronJob"
Jump to navigation
Jump to search
(Created page with "Experiments with jobs. CLI <source lang=bash> # Delete completed jobs kubectl.exe -n dev delete job $(kubectl.exe -n dev get job -o=jsonpath='{.items[?(@.status.succeeded==1)...") |
|||
| Line 106: | Line 106: | ||
When applied to minikube 1.15.2 | When applied to minikube 1.15.2 | ||
<source lang=bash> | <source lang=bash> | ||
kubectl.exe apply -f jobs/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 | NAME COMPLETIONS DURATION AGE | ||
job.batch/cron-delete-jobs-1568245320 1/1 8s 2m1s | job.batch/cron-delete-jobs-1568245320 1/1 8s 2m1s | ||
Revision as of 00:52, 12 September 2019
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 one time off 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/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