Comment afficher les journaux des pods Kubernetes avec Kubectl – CloudSavvy IT


Graphique montrant le logo Kubernetes

L’affichage des journaux de pod est souvent la première étape du diagnostic d’un problème avec les charges de travail de votre cluster. Voici comment utiliser Kubectl pour diffuser en direct les journaux sur votre terminal, vous permettant d’inspecter la sortie de votre application.

Commencer

Assurez-vous que Kubectl est installé et connecté à votre cluster. Vous pouvez spécifier un fichier Kubeconfig en définissant le KUBECONFIG variable d’environnement dans votre shell :

export KUBECONFIG=~/.kube/my-cluster.yaml

Ensuite, utilisez Kubectl pour répertorier vos pods :

kubectl get pods

N’oubliez pas d’ajouter le --namespace signaler lorsque vos pods vivent en dehors de l’espace de noms par défaut :

kubectl --namespace my-namespace get pods

L’ajout d’un alias temporaire à votre shell est un bon moyen de raccourcir cette étape, vous aidant à exécuter plusieurs commandes sur le même espace de noms :

alias k="kubectl --namespace my-namespace"

k get pods

Accéder aux journaux des pods

Les kubectl logs La commande vous permet d’inspecter les journaux produits par un pod nommé :

kubectl logs pod-name

Les logs existants du Pod seront émis vers votre terminal. Lorsque le pod est formé de plusieurs conteneurs, vous devez également spécifier le nom du conteneur que vous souhaitez inspecter :

kubectl logs pod-name container-name

Sinon, réglez le --all-containers flag pour inclure les lignes de journal produites par l’un des conteneurs du pod. Attention, vous pourriez voir une sortie verbeuse et répétitive lorsque cet indicateur est utilisé contre un pod occupé :

kubectl logs pod-name --all-containers

Vous pouvez également obtenir les journaux d’un ensemble de pods avec une étiquette donnée. Cela vous permet d’agréger les journaux de différents pods, à condition qu’ils partagent tous le même libellé :

kubectl logs -l my-label=my-value --all-containers

Journaux en continu

La plaine logs La commande émet les journaux du pod actuellement stockés, puis se ferme. Ajouter le -f (--follow) à la commande pour suivre les journaux et les diffuser en direct sur votre terminal.

Kubectl émettra chaque nouvelle ligne de journal dans votre terminal jusqu’à ce que vous arrêtiez la commande avec Ctrl+C. Cela équivaut à utiliser tail -f avec un fichier journal local dans un environnement non conteneurisé.

Affichage des journaux plus anciens

kubectl logs n’inclura pas les lignes de journal produites par les anciens conteneurs qui étaient autrefois des membres du pod mais qui ont depuis été remplacés. Ces journaux sont accessibles en ajoutant le -p (--previous) drapeau.

Kubectl affichera ensuite l’intégralité du journal stocké pour le pod, y compris les lignes émises par les conteneurs qui ont depuis été résiliés.

Obtenir des journaux récents

Parfois, vous n’avez pas besoin de voir l’intégralité du flux de journaux. Kubectl prend en charge un --since signaler quelles surfaces log lignes émises après un temps donné :

kubectl logs pod-name --since=2h

Cette commande affichera la sortie du journal de pod-name qui a été produit au cours des deux dernières heures. Une autre variante, --since-time, prend en charge un Conforme RFC3339 chaîne d’horodatage au lieu de l’expression d’heure relative indiquée ci-dessus.

Les --tail flag est une autre option pour condenser les journaux. Cela limite le nombre de lignes affichées, évitant un terminal plein lorsque vous n’avez besoin de voir que la sortie très récente :

# Shows the last 10 lines of the log
kubectl logs pod-name --tail=10

Kubectl n’affiche pas les horodatages de ligne par défaut, car de nombreuses applications les incluent déjà dans leur sortie de journal. Ajouter le --timestamps flag pour que Kubectl ajoute des horodatages au début des lignes lorsque votre charge de travail ne les fournit pas.

Vous pouvez également ajouter les noms de pod et de conteneur inspectés aux lignes de journal. Cette fonctionnalité est activée avec le --prefix drapeau. Il peut être combiné avec --timestamps pour afficher l’heure à laquelle chaque ligne a été créée et la source d’où elle provient.

Accès aux journaux à partir d’autres types de ressources

kubectl logs fonctionne avec les ressources de déploiement et de tâche en plus des pods :

kubectl logs job/my-job
kubectl logs deployment/my-deployment

Vous obtiendrez les journaux du premier conteneur de la tâche ou du déploiement. Utilisez le --all-containers flag pour afficher les journaux créés par l’un des conteneurs correspondants. Vous pouvez utiliser tous les indicateurs décrits ci-dessus, que vous affichiez un pod, un déploiement ou une tâche.

Gestion des journaux plus avancée

Kubectl n’inclut pas de moyen de filtrer, rechercher ou transformer vos journaux. Il est préférable de canaliser le kubectl logs sortie dans des outils terminaux établis comme awk, grep ou sed dans ce but.

kubectl logs my-pod | grep search-expression

De même, utilisez les fonctionnalités de redirection existantes dans votre shell pour enregistrer les journaux dans un fichier :

kubectl logs my-pod > my-pod-logs.txt

Sommaire

Kubectl vous permet d’accéder aux journaux de vos ressources soit par conteneur, soit de manière agrégée. Vous pouvez afficher un instantané des journaux actuellement collectés, diffuser en continu de nouvelles lignes sur votre terminal et accéder aux lignes historiques émises par les conteneurs terminés.

La commande est livrée avec des options de personnalisation limitées, notamment un limiteur de nombre de lignes et un filtrage de date simpliste. Lorsqu’une analyse plus exigeante est nécessaire, redirigez la sortie dans les commandes du terminal Unix pour analyser rapidement vos journaux et trouver les causes des erreurs dans vos applications.

Kubectl collecte les journaux à partir de la sortie standard et des flux d’erreurs de vos conteneurs. Il est important de vous assurer que vous écrivez correctement la sortie dans ces flux, car un conteneur mal configuré entraînera une sortie vide lors de l’exécution. kubectl logs.



Vous pouvez lire l’article original (en Angais) sur le sitewww.cloudsavvyit.com