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