Comment afficher les journaux de pod Kubernetes avec Kubectl

0
51

L'affichage des journaux de pod est souvent la première étape pour diagnostiquer 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.

Mise en route

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

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

Ensuite, utilisez Kubectl pour lister vos Pods :

kubectl get pods

N'oubliez pas d'ajouter l'indicateur –namespace lorsque vos pods vivent en dehors de l'espace de noms par défaut :

kubectl –namespace my-namespace get pods

Ajouter 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ès aux journaux des pods

La commande kubectl logs vous permet d'inspecter les journaux produits par un Pod :

kubectl logs pod-name Advertisement

Les journaux existants du Pod seront émis sur 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 conteneur-name

Vous pouvez également définir l'indicateur –all-containers pour inclure les lignes de journal produites par l'un des conteneurs du pod. Attention, vous pourriez voir une sortie détaillée 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 un étiqueter. 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

Continuely Streaming Logs

La commande plain logs émet les journaux de pod actuellement stockés, puis sorties. Ajoutez l'indicateur -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

Les journaux kubectl n'incluront 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 l'indicateur -p (–previous).

Publicité

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

Obtenir les journaux récents

Parfois, vous n'avez pas besoin de voir l'intégralité du flux de journal. Kubectl prend en charge un indicateur –since qui affiche les lignes de journal émises après un temps donné :

kubectl logs pod-name –since=2h

Cette commande affichera la sortie de journal de pod-name qui a été produite dans le dernières deux heures. Une autre variante, –since-time, prend en charge une chaîne d'horodatage conforme à la RFC3339 au lieu de l'expression d'heure relative indiquée ci-dessus.

L'indicateur –tail 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 :

# Affiche les 10 dernières lignes du journal 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. Ajoutez l'indicateur –timestamps 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 l'indicateur –prefix. 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'une autre ressource Types

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

les journaux kubectl job/my-job kubectl logs deploy/my-deployment Publicité

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

Gestion plus avancée des journaux

< p> Kubectl n'inclut pas de moyen de filtrer, rechercher ou transformer vos journaux. Il est préférable de diriger la sortie des journaux kubectl dans des outils de terminal établis tels que awk, grep ou sed à cette fin.

kubectl enregistre mon 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

Résumé

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 une date simpliste. filtration. 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.

Publicité

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 lorsque vous exécuterez les journaux kubectl.