Quand on travaille avec des jobs dans Kubernetes, on peut avoir le besoin de les faire rouler une fois quand on déploie et après on n'en a plus besoin. Donc conserver la ressource vous est inutile et vous voulez la supprimer. (D'autant plus si lors de vos déploiements vous modifiez certaines informations de la job - ce qui peut causer des erreurs)
Pour ce faire, il vous suffit d'ajouter le champ .spec.ttlSecondsAfterFinished
dans la définition de votre Job avec comme valeur, le nombre de secondes après lequel vous voulez que la Job soit terminée.
Exemple
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-ttl
spec:
ttlSecondsAfterFinished: 100
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
Mais attention!! J'ai bien mentionné terminée, du coup peut importe si votre Job s'est terminée avec succès ou non, elle sera supprimée après le délais défini! Par conséquent, faites attention à la valeur que vous définissez!
En effet, si vous n'avez pas un système mis en place qui va rammasser les logs, vous n'aurez aucune vision sur ce qui a pu se passer, et donc débugger en cas de soucis.
Le mieux est de définir dans tous les cas une valeur suffisamment grande pour que vous puissez voir ce qu'il se passe sur votre cluster après un déploiement et être capable de récupérer les informations avant qu'elles ne disparaissent.
Si vous utilisez Helm, on va voir prochainement qu'il y a un système existant qui est bien plus utile.
Liens
- Documentation K8s - Automatic Cleanup for Finished Jobs : https://kubernetes.io/docs/concepts/workloads/controllers/ttlafterfinished/
- Documentation K8s - Jobs : https://kubernetes.io/docs/concepts/workloads/controllers/job/#clean-up-finished-jobs-automatically
J'espère que ça vous sera utile! 🍺
Top comments (0)