Si vous exécutez ce tutoriel dans Minikube, vous devez déployer un seul noeud :
minikube stop
minikube delete --all
minikube start --vm-driver=none
La plupart du temps, vous utilisez Kubernetes comme plateforme pour exécuter des processus “longs” dont l’objectif est de fournir des réponses à une requête entrante donnée.
Mais Kubernetes vous permet également d’exécuter des processus dont le but est d’exécuter une certaine logique (par exemple, mise à jour de la base de données, traitement par lots, …) et de mourir.
Les Jobs Kubernetes sont des tâches qui exécutent une certaine logique une fois.
Les CronJobs de Kubernetes sont des tâches qui se répètent en suivant un modèle Cron.
Ajouter des nœuds supplémentaires pour exécuter cette partie du tutoriel. Vérifiez le nombre de nœuds que vous avez delpoyés en exécutant :
Un job est créé à l’aide de la ressource Kubernetes Job :
vim apps/kubefiles/whalesay-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: whale-say-job
spec:
template:
spec:
containers:
- name: whale-say-container
image: docker/whalesay
command: ["cowsay","Hello Kubernetes Team"]
restartPolicy: Never
kubectl apply -f apps/kubefiles/whalesay-job.yaml
watch kubectl get pods
NAME READY STATUS RESTARTS AGE
whale-say-job-lp4n5 0/1 ContainerCreating 0 9s
NAME READY STATUS RESTARTS AGE
whale-say-job-lp4n5 1/1 Running 0 19s
NAME READY STATUS RESTARTS AGE
whale-say-job-lp4n5 0/1 Completed 0 25s
Vous pouvez obtenir des emplois comme toute autre ressource Kubernetes :
kubectl get jobs
NAME COMPLETIONS DURATION AGE
whale-say-job 1/1 20s 36s
Pour obtenir le résultat de l’exécution du job :
kubectl logs whale-say-job-lp4n5
_______________________
< Hello Kubernetes Team >
-----------------------
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
Supprimer les ressources
kubectl delete -f apps/kubefiles/whalesay-job.yaml
Un CronJob est défini à l’aide de la ressource Kubernetes CronJob :
vim apps/kubefiles/whalesay-cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: whale-say-cronjob
spec:
schedule: "*/1 * * * *" (1)
jobTemplate:
spec:
template:
spec:
containers:
- name: whale-say-container
image: docker/whalesay
command: ["cowsay","Hello Kubernetes Team"]
restartPolicy: Never
1- Le travail est exécuté toutes les minutes.
kubectl apply -f apps/kubefiles/whalesay-cronjob.yaml
kubectl get pods
NAME READY STATUS RESTARTS AGE
Aucun Pod n’est en cours d’exécution car le CronJob est exécuté après 1 minute.
kubectl get cronjobs
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
whale-say-cronjob */1 * * * * False 0 <none> 34s
Attendez une minute :
kubectl get pods
NAME READY STATUS RESTARTS AGE
whale-say-cronjob-1593436740-z9tf2 0/1 Completed 0 23s
kubectl get cronjobs
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
whale-say-cronjob */1 * * * * False 0 48s 3m41s
Remarquez qu’un champ important est le Last Schedule, qui nous indique quand un travail a été exécuté pour la dernière fois.
Il est important de noter qu’un CronJob crée un travail :
kubectl get jobs
NAME COMPLETIONS DURATION AGE
whale-say-cronjob-1593436800 1/1 3s 44s
Supprimer les ressources
kubectl delete -f apps/kubefiles/whalesay-cronjob.yaml