7
votes

I have a service that deploys thousands of short lived jobs on Kubernetes each day. I am trying to get Kubernetes to delete these jobs after completion using the functionality described here:

https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#clean-up-finished-jobs-automatically

The job completes, but the Job remains in the cluster after the time limit expressed in ttlSecondsAfterFinished.

I'm testing this on GKE and my master node is running 1.12.7-gke.25 I understand this is an alpha feature, but I haven't gotten a single Job to be deleted.

apiVersion: batch/v1 
kind: Job
metadata:
  name: ttl-test
spec:
  ttlSecondsAfterFinished: 100
  template:
    metadata:
      name: ttl-test 
    spec:
      containers:
      - name: test-container
        image: myimage
1
Do you have alpha features enabled on your GKE cluster? You can check this on the GCP console UI under Clusters / <your_cluster> / Details / Kubernetes alpha features. - gnvk
That did it! Thanks. - Brett
Let me move it to an answer then to help others in the future - gnvk

1 Answers

14
votes

In Kubernetes v1.21 the TTL Controller is in beta and enabled by default.

Until Kubernetes v1.20 it was an alpha feature. If you want to use it with a Kubernetes version older than v1.21, make sure alpha features are enabled on your GKE cluster. You can check this on the GCP console UI under Clusters / <your_cluster> / Details / Kubernetes alpha features.