Job et CronJob
Job et CronJob:
Job:
Un Job est un type de ressource Kubernetes utilisé pour exécuter des tâches à court terme, souvent des travaux en batch ou des tâches ponctuelles. Les Jobs garantissent que la tâche est exécutée une seule fois ou un certain nombre de fois avec succès.

Avantages:
- Durée limitée donc consommation de ressource limitée
- Exécution unique
- Rapidité
- Très utile pour les tâches de backup
- Un traitement de bacth
- Exemple1: job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
kubectl apply -f job.yaml
kubetctl get job,po

- Exemple 2: backoff-limit and job failure
apiVersion: batch/v1
kind: Job
metadata:
name: job-backoff-limit-per-index
spec:
completions: 10
parallelism: 3
completionMode: Indexed # required for the feature
backoffLimitPerIndex: 1 # maximal number of failures per index
maxFailedIndexes: 5 # maximal number of failed indexes before terminating the Job execution
template:
spec:
restartPolicy: Never # required for the feature
containers:
- name: python-job
image: python
command: # The jobs fails as there is at least one failed index
# (all even indexes fail in here), yet all indexes
# are executed as maxFailedIndexes is not exceeded.
- python3
- -c
- |
import os, sys
print("Hello world")
if int(os.environ.get("JOB_COMPLETION_INDEX")) % 2 == 0:
sys.exit(1)
---
apiVersion: batch/v1
kind: Job
metadata:
name: job-pod-failure-policy
spec:
completions: 12
parallelism: 3
template:
spec:
restartPolicy: Never
containers:
- name: main
image: docker.io/library/bash:5
command: ["bash"] # example command simulating a bug which triggers the FailJob action
args:
- -c
- echo "Hello world!" && sleep 5 && exit 42
backoffLimit: 6
podFailurePolicy:
rules:
- action: FailJob
onExitCodes:
containerName: main # optional
operator: In # one of: In, NotIn
values: [42]
- action: Ignore # one of: Ignore, FailJob, Count
onPodConditions:
- type: DisruptionTarget # indicates Pod disruption
kubectl apply -f job.yaml
kubectl get job,po

ConJob:
Un CronJob est similaire à un Job, mais il permet de planifier l'exécution de la tâche de manière répétée, à une heure spécifique, selon une fréquence donnée (comme cron sur un système Unix/Linux). Les CronJobs sont couramment utilisés pour des tâches telles que la sauvegarde de données, la génération de rapports ou la maintenance régulière de l'infrastructure.

Avantages:
- Tous les avantages d'un job
- planification de tâches
- syntaxe cron unix
- Execution repétée
Schedule syntax
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │ 7 is also Sunday on some systems)
# │ │ │ │ │ OR sun, mon, tue, wed, thu, fri, sat
# │ │ │ │ │
# * * * * *
Exemple1: Every minute
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox:1.28
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
kubectl apply -f cron-job.yaml
kubectl get cj,job,po

Exemple2: Si vous avez un script dans sauvegarder-script.sh
apiVersion: batch/v1
kind: CronJob
metadata:
name: sauvegarde-quotidienne
spec:
schedule: "0 0 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: sauvegarde
image: mon-image-de-sauvegarde:latest
command: ["sauvegarder-script.sh"]Commentaires
Aucun commentaire pour le moment.