Analyse des journaux des Jobs Kubernetes
Être capable de visualiser et d'analyser les journaux de vos jobs Kubernetes est essentiel pour le débogage et la compréhension du comportement des jobs. Dans cette étape, nous allons explorer comment accéder et analyser les journaux des jobs que nous avons créés.
Obtention des noms des pods pour nos Jobs
Avant de pouvoir visualiser les journaux, nous devons connaître les noms des pods créés par nos jobs. Chaque job crée un ou plusieurs pods avec des noms qui incluent le nom du job et un suffixe aléatoire.
Listons tous les pods liés à nos jobs :
kubectl get pods --show-labels
Cela affichera tous les pods ainsi que leurs labels. Recherchez les pods avec des labels tels que job-name=hello-job ou job-name=long-job.
Alternativement, vous pouvez filtrer les pods par nom de job :
kubectl get pods -l job-name=hello-job
Cela affichera uniquement les pods qui appartiennent au job hello-job.
Visualisation des journaux des Jobs
Maintenant que nous connaissons les noms de nos pods, nous pouvons visualiser les journaux de nos jobs. Utilisez la commande suivante, en remplaçant <pod-name> par le nom réel de votre pod :
kubectl logs <pod-name>
Par exemple, si votre pod s'appelle hello-job-abcd1, vous exécuteriez :
kubectl logs hello-job-abcd1
Vous devriez voir la sortie :
Hello, Kubernetes!
C'est le message que notre job était programmé pour afficher.
Vérifions également les journaux de notre job plus long. Tout d'abord, trouvez le nom du pod :
kubectl get pods -l job-name=long-job
Ensuite, affichez ses journaux :
kubectl logs <long-job-pod-name>
Vous devriez voir :
Starting long job...
Long job completed!
Visualisation des journaux des Jobs terminés
L'un des avantages des jobs Kubernetes est que vous pouvez visualiser les journaux même après que le job soit terminé. Ceci est très utile à des fins de débogage et d'audit.
Créons un job qui échouera, afin de voir comment le déboguer :
cd ~/project
nano failed-job.yaml
Copiez et collez le contenu YAML suivant :
apiVersion: batch/v1
kind: Job
metadata:
name: failed-job
spec:
template:
spec:
containers:
- name: failed
image: busybox:1.28
command: ["sh", "-c", 'echo "Attempting task..." && exit 1']
restartPolicy: Never
backoffLimit: 2
Ce job quittera toujours avec le code d'état 1, ce qui indique un échec. Enregistrez le fichier et quittez nano, puis créez le job :
kubectl apply -f failed-job.yaml
Attendez quelques instants que le job tente et échoue plusieurs fois (jusqu'à la limite de backoff). Ensuite, vérifiez son état :
kubectl get jobs failed-job
Vous devriez voir qu'il affiche 0/1 completions et a atteint la date limite d'achèvement.
Examinons maintenant ce qui s'est mal passé en vérifiant les journaux des pods ayant échoué :
kubectl get pods -l job-name=failed-job
Vous verrez plusieurs pods, tous dans l'état Error. Choisissez-en un et affichez ses journaux :
kubectl logs <failed-pod-name>
Vous devriez voir :
Attempting task...
Les journaux du pod montrent que la tâche a commencé, mais s'est ensuite terminée avec un code d'erreur. Ces informations sont cruciales pour le débogage des échecs de job.
Suivi des journaux en temps réel
Si vous souhaitez suivre les journaux d'un job en cours d'exécution en temps réel, vous pouvez utiliser l'option -f :
kubectl logs -f <pod-name>
Ceci est particulièrement utile pour les jobs de longue durée où vous souhaitez voir la sortie au fur et à mesure qu'elle se produit.
Créons un autre job de longue durée pour démontrer :
cd ~/project
nano counter-job.yaml
Copiez et collez le contenu YAML suivant :
apiVersion: batch/v1
kind: Job
metadata:
name: counter-job
spec:
template:
spec:
containers:
- name: counter
image: busybox:1.28
command:
[
"sh",
"-c",
'for i in $(seq 1 5); do echo "Count: $i"; sleep 5; done'
]
restartPolicy: Never
Enregistrez le fichier et quittez nano, puis créez le job :
kubectl apply -f counter-job.yaml
Maintenant, suivons ses journaux. Tout d'abord, trouvez le nom du pod :
kubectl get pods -l job-name=counter-job
Ensuite, suivez ses journaux :
kubectl logs -f <counter-job-pod-name>
Vous verrez le compte s'incrémenter toutes les 5 secondes :
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Appuyez sur Ctrl+C pour arrêter de suivre les journaux.
En comprenant comment accéder et analyser les journaux, vous pouvez efficacement dépanner et déboguer vos jobs Kubernetes.