Hur man visar Kubernetes Pod-loggar med Kubectl

0
198

Visa Pod-loggar är ofta det första steget för att diagnostisera ett problem med ditt kluster& #8217;s arbetsbelastning. Så här använder du Kubectl för att livestreama loggar till din terminal, så att du kan inspektera utdata från din applikation.

Komma igång

Gör se till att du har Kubectl installerat och anslutet till ditt kluster. Du kan ange en Kubeconfig-fil genom att ställa in miljövariabeln KUBECONFIG i ditt skal:

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

Använd sedan Kubectl för att lista dina Pods:

kubectl get pods

Kom ihåg att lägga till –namespace-flaggan när dina Pods lever utanför standardnamnutrymmet:

kubectl –namespace my-namespace get pods

Att lägga till ett tillfälligt alias till ditt skal är ett bra sätt att förkorta Detta steg hjälper dig att köra flera kommandon mot samma namnområde:

alias k=”kubectl –namespace my-namespace” k get pods

Åtkomst till podloggar

Kommandot kubectl logs låter dig inspektera loggarna som produceras av en namngiven Pod:

kubectl logs pod-name Annons

Poddens befintliga loggar kommer att skickas till din terminal. När podden är bildad av mer än en behållare måste du också ange namnet på den behållare du vill inspektera:

kubectl loggar pod-namn container-name

Alternativt ställer du in flaggan –all-containers så att den inkluderar loggrader producerade av någon av behållarna i Poden. Tänk på att du kan se utförlig och repetitiv utdata när denna flagga används mot en upptagen Pod:

kubectl logs pod-name –all-containers

Du kan också hämta loggarna från en uppsättning Pods med en given märka. Detta låter dig samla loggar från olika Pods, förutsatt att de alla delar samma etikett:

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

Kontinuerligt strömmande loggar

Kommandot plain logs avger de för närvarande lagrade Pod-loggarna och sedan utgångar. Lägg till flaggan -f (–follow) till kommandot för att följa loggarna och livestreama dem till din terminal.

Kubectl kommer att skicka ut varje ny loggrad till din terminal tills du stoppar kommandot med Ctrl+ C. Detta motsvarar att använda tail -f med en lokal loggfil i en icke-containeriserad miljö.

Visa äldre loggar

kubectl-loggar kommer inte att inkludera logglinjer som producerats av gamla behållare som en gång var Pod-medlemmar men som sedan har ersatts. Dessa loggar kan nås genom att lägga till flaggan -p (–föregående).

Annons

Kubectl kommer sedan att visa hela den lagrade loggen för podden, inklusive rader som skickades ut av behållare som har sedan dess avslutats.

Hämta senaste loggar

Ibland behöver du inte se hela loggströmmen. Kubectl stöder en –since-flagga som visar logglinjer som sänds ut efter en given tid:

kubectl loggar podnamn –since=2h

Detta kommando visar loggutdata från podnamn som producerades inom senaste två timmarna. En annan variant, –since-time, stöder en RFC3339-kompatibel tidsstämpelsträng istället för det relativa tidsuttrycket som visas ovan.

Flaggan –tail är ett annat alternativ för kondensering av stockar. Detta begränsar antalet rader som visas och undviker en full terminal när du bara behöver se mycket nyligen utdata:

# Visar de sista 10 raderna i loggen kubectl logs pod-name –tail=10

Kubectl visar inte radtidsstämplar som standard eftersom många applikationer redan inkluderar dem i sin loggutdata. Lägg till flaggan –timestamps för att få Kubectl att lägga till tidsstämplar i början av rader när din arbetsbelastning inte ger dem.

Du kan lägga till de inspekterade pod- och behållarnamnen för att logga rader också. Denna funktionalitet aktiveras med flaggan –prefix. Den kan kombineras med –timestamps för att visa tiden varje rad skapades och källan den härrör från.

Åtkomst av loggar från annan resurs Typer

kubectl-loggar fungerar med distributions- och jobbresurser förutom poddar:

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

Du får loggarna från den första behållaren i jobbet eller distributionen. Använd flaggan –all-containers för att visa loggar skapade av någon av de matchande behållarna. Du kan använda alla flaggor som beskrivs ovan oavsett om du tittar på en pod, driftsättning eller jobb.

Mer avancerad logghantering

< p>Kubectl innehåller inte ett sätt att filtrera, söka eller omvandla dina loggar. Det är bäst att skicka ut kubectl-loggarna till etablerade terminalverktyg som awk, grep eller sed för detta ändamål.

kubectl loggar my-pod | grep search-expression

Använd på samma sätt de befintliga omdirigeringsfunktionerna i skalet för att spara loggar i en fil:

kubectl loggar my-pod & gt; my-pod-logs.txt

Sammanfattning

Kubectl låter dig komma åt loggar från dina resurser, antingen per behållare eller samlat. Du kan se en ögonblicksbild av loggar som samlats in, ständigt strömma nya rader till din terminal och få tillgång till historiska rader som avges av avslutade behållare.

Kommandot har några begränsade anpassningsalternativ inklusive en radräknare och förenklat datum filtrering. När mer krävande analys behövs, skicka utdata till Unix-terminalkommandon för att snabbt analysera dina loggar och hitta orsakerna till fel i dina applikationer.

Annons

Kubectl samlar in loggar från standardutdata och felströmmar av dina behållare. Det är viktigt att se till att du skriver utdata till dessa strömmar korrekt eftersom en felkonfigurerad behållare kommer att resultera i tom utdata när du kör kubectl-loggar.