Commande de journalisation (logs) Kubernetes

KubernetesKubernetesBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/delete("Delete") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/exec("Exec") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/logs("Logs") subgraph Lab Skills kubernetes/get -.-> lab-8099{{"Commande de journalisation (logs) Kubernetes"}} kubernetes/delete -.-> lab-8099{{"Commande de journalisation (logs) Kubernetes"}} kubernetes/describe -.-> lab-8099{{"Commande de journalisation (logs) Kubernetes"}} kubernetes/exec -.-> lab-8099{{"Commande de journalisation (logs) Kubernetes"}} kubernetes/logs -.-> lab-8099{{"Commande de journalisation (logs) Kubernetes"}} end

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.

  1. Accédez à votre répertoire de travail :

    Ouvrez le terminal et accédez au dossier de projet par défaut :

    cd /home/labex/project
  2. Dé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.
  3. Vérifiez que Minikube est en cours d'exécution :

    Vérifiez l'état du cluster Minikube :

    minikube status
    • Recherchez des composants tels que kubelet et apiserver listés comme Running (en cours d'exécution).
    • Si le cluster n'est pas en cours d'exécution, relancez la commande minikube start.

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 (logs) des conteneurs

Dans cette étape, vous apprendrez à afficher les journaux d'un conteneur en cours d'exécution dans un pod.

  1. Commencez par créer un déploiement (deployment) avec une seule réplique et un conteneur Nginx :

    kubectl create deployment nginx --image=nginx --replicas=1
  2. Attendez que le pod soit prêt :

    kubectl wait --for=condition=Ready pod -l app=nginx
  3. Utilisez la commande kubectl logs pour 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.

  1. 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"
    EOF
  2. Attendez que le pod soit prêt :

    kubectl wait --for=condition=Ready pod nginx-busybox
  3. Utilisez la commande kubectl logs pour 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.

  1. Utilisez la commande kubectl logs avec l'option -f pour suivre les journaux en temps réel :

    kubectl logs -f nginx-busybox
  2. Ouvrez un nouveau terminal et créez un shell dans le conteneur Nginx :

    kubectl exec -it nginx-busybox -c nginx -- /bin/sh
  3. Générez quelques journaux en exécutant une commande à l'intérieur du conteneur :

    curl 127.0.0.1
  4. Revenez 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.

  1. 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
    EOF
  2. Attendez que le pod soit prêt :

    kubectl wait --for=condition=Ready pod nginx-fluentd
  3. Utilisez la commande kubectl logs pour 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.