GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment afficher les journaux de pod Kubernetes avec Kubectl

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, ce qui vous permet d'inspecter la sortie de votre application.

Mise en route

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, en 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 journaux existants du Pod seront transmis à votre terminal. Lorsque le Pod est formé à partir de plusieurs conteneurs, vous devez également spécifier le nom du conteneur que vous souhaitez inspecter :

kubectl logs pod-name container-name

Vous pouvez également définir le --all-containers flag 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 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 streaming continu

Les logs simples La commande émet les journaux de pod actuellement stockés, puis se termine. Ajoutez 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é.

Afficher les anciens journaux

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

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

Obtenir les journaux récents

Parfois, vous n'avez pas besoin de voir l'intégralité du flux de journaux. Kubectl prend en charge un --since drapeau qui fait apparaître les lignes de log é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 une chaîne d'horodatage conforme à la RFC3339 au lieu de l'expression d'heure relative indiquée ci-dessus.

Le --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 des sorties très récentes :

# 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. Ajoutez 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éder aux journaux à partir d'autres types de ressources

kubectl logs fonctionne avec des 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 visualisiez un pod, un déploiement ou une tâche.

Gestion plus avancée des journaux

Kubectl n'inclut aucun moyen de filtrer, rechercher ou transformer vos journaux. Il est préférable de canaliser les kubectl logs sortie dans des outils de terminal établis comme awk , grep ou sed à cet effet.

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

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 résiliés.

La commande est livrée avec quelques 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, dirigez la sortie vers les commandes du terminal Unix pour analyser rapidement vos journaux et trouver les causes des erreurs dans vos applications.

Kubectl collecte les journaux à partir des flux de sortie et d'erreur standard 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écutez kubectl logs .


Docker
  1. Comment afficher les journaux d'accès et d'erreurs d'Apache

  2. Comment installer Kubernetes avec Minikube sur Ubuntu 20.04

  3. Comment copier des fichiers entre les pods Kubernetes et votre machine

  4. Comment afficher les performances passées avec sar sous Linux

  5. Comment entrer un pod en tant que root ?

Comment installer Kubernetes avec Minikube sur Ubuntu 18.04 LTS

Comment déployer une application multiniveau avec Kubernetes

Comment configurer Kubernetes 1.5 avec kubeadm sur CentOS

Comment afficher les statistiques du système Linux avec Saidar

Comment déployer des piles Docker Compose sur Kubernetes avec Kompose

Comment afficher les journaux d'erreurs cPanel