Introduction
Dans ce laboratoire (lab), vous apprendrez à utiliser la commande Kubernetes logs pour afficher les journaux (logs) des pods en cours d'exécution dans un cluster Kubernetes. Vous commencerez par des exemples simples et progresserez progressivement vers des scénarios plus complexes.
Démarrer le cluster Minikube
Avant de créer des ressources, vous avez besoin d'un cluster Kubernetes en cours d'exécution. Minikube est un environnement Kubernetes léger qui s'exécute sur votre machine locale.
Accédez à votre répertoire de travail :
Ouvrez le terminal et accédez au dossier de projet par défaut :
cd /home/labex/projectDémarrez Minikube :
Démarrez Minikube pour initialiser un cluster Kubernetes :
minikube start- Cette commande configure un cluster Kubernetes mono - nœud sur votre machine locale.
- Minikube peut prendre quelques minutes à démarrer en fonction des performances de votre système.
Vérifiez que Minikube est en cours d'exécution :
Vérifiez l'état du cluster Minikube :
minikube status- Recherchez des composants tels que
kubeletetapiserverlistés commeRunning(en cours d'exécution). - Si le cluster n'est pas en cours d'exécution, relancez la commande
minikube start.
- Recherchez des composants tels que
Si vous rencontrez des problèmes lors du démarrage de Minikube, utilisez minikube delete pour réinitialiser l'environnement si nécessaire.
Explorer la commande kubectl logs
La commande kubectl logs est utilisée pour afficher les journaux (logs) d'un conteneur dans un pod ou d'une ressource spécifiée. Elle prend en charge les journaux instantanés (snapshot logs), le streaming, le filtrage et diverses autres options pour une gestion efficace des journaux.
Exécutez la commande suivante pour afficher les options disponibles pour kubectl logs :
kubectl logs -h
Vous verrez la sortie suivante :
Affiche les journaux d'un conteneur dans un pod ou d'une ressource spécifiée. Si le pod ne contient qu'un seul conteneur, le nom du conteneur est facultatif.
Exemples :
## Récupère les journaux instantanés du pod nginx avec un seul conteneur
kubectl logs nginx
## Récupère les journaux instantanés du pod nginx avec plusieurs conteneurs
kubectl logs nginx --all-containers=true
## Récupère les journaux instantanés de tous les conteneurs dans les pods définis par l'étiquette app=nginx
kubectl logs -l app=nginx --all-containers=true
## Récupère les journaux instantanés du conteneur ruby précédemment terminé dans le pod web-1
kubectl logs -p -c ruby web-1
## Démarre le streaming des journaux du conteneur ruby dans le pod web-1
kubectl logs -f -c ruby web-1
## Démarre le streaming des journaux de tous les conteneurs dans les pods définis par l'étiquette app=nginx
kubectl logs -f -l app=nginx --all-containers=true
## Affiche seulement les 20 dernières lignes de sortie du pod nginx
kubectl logs --tail=20 nginx
## Affiche tous les journaux du pod nginx écrits au cours de la dernière heure
kubectl logs --since=1h nginx
## Affiche les journaux d'un kubelet avec un certificat de service expiré
kubectl logs --insecure-skip-tls-verify-backend nginx
## Récupère les journaux instantanés du premier conteneur d'un job nommé hello
kubectl logs job/hello
## Récupère les journaux instantanés du conteneur nginx-1 d'un déploiement nommé nginx
kubectl logs deployment/nginx -c nginx-1
Affichage des journaux de conteneur
Dans cette étape, vous apprendrez à afficher les journaux d'un conteneur en cours d'exécution dans un pod.
Commencez par créer un déploiement (deployment) avec une seule réplique et un conteneur Nginx :
kubectl create deployment nginx --image=nginx --replicas=1Attendez que le pod soit prêt :
kubectl wait --for=condition=Ready pod -l app=nginxUtilisez la commande
kubectl logspour afficher les journaux du conteneur Nginx :kubectl logs POD_NAME
Remplacez POD_NAME par le nom du pod créé à l'étape 1. Vous pouvez obtenir le POD_NAME avec la commande kubectl get pod -l app=nginx.
Affichage des journaux d'un conteneur spécifique dans un pod
Dans cette étape, vous apprendrez à afficher les journaux d'un conteneur spécifique en cours d'exécution dans un pod.
Créez un pod avec deux conteneurs : Nginx et BusyBox :
cat << EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: nginx-busybox spec: containers: - name: nginx image: nginx - name: busybox image: busybox command: - sleep - "3600" EOFAttendez que le pod soit prêt :
kubectl wait --for=condition=Ready pod nginx-busyboxUtilisez la commande
kubectl logspour afficher les journaux du conteneur BusyBox :kubectl logs nginx-busybox -c busybox
Suivi des journaux en temps réel
Dans cette étape, vous apprendrez à suivre les journaux en temps réel au fur et à mesure de leur génération.
Utilisez la commande
kubectl logsavec l'option-fpour suivre les journaux en temps réel :kubectl logs -f nginx-busyboxOuvrez un nouveau terminal et créez un shell dans le conteneur Nginx :
kubectl exec -it nginx-busybox -c nginx -- /bin/shGénérez quelques journaux en exécutant une commande à l'intérieur du conteneur :
curl 127.0.0.1Revenez au premier terminal où vous suivez les journaux et observez que la nouvelle entrée de journal est affichée.
Affichage des journaux de plusieurs conteneurs
Dans cette étape, vous apprendrez à afficher les journaux de plusieurs conteneurs en cours d'exécution dans un pod.
Créez un pod avec deux conteneurs : Nginx et Fluentd :
cat << EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: nginx-fluentd spec: containers: - name: nginx image: nginx - name: fluentd image: fluentd EOFAttendez que le pod soit prêt :
kubectl wait --for=condition=Ready pod nginx-fluentdUtilisez la commande
kubectl logspour afficher les journaux des deux conteneurs :kubectl logs nginx-fluentd -c nginx kubectl logs nginx-fluentd -c fluentd
Résumé
Félicitations, vous avez réussi le laboratoire (lab) sur les commandes de journalisation (logs) de Kubernetes! Dans ce laboratoire, vous avez appris à afficher les journaux des conteneurs en cours d'exécution dans un pod en utilisant la commande kubectl logs. Vous avez également appris à afficher les journaux de conteneurs spécifiques et de plusieurs conteneurs, à suivre les journaux en temps réel et à générer des journaux depuis l'intérieur d'un conteneur. Ces compétences sont essentielles pour résoudre les problèmes dans un cluster Kubernetes.


