Kubernetes Pod-logboeken bekijken met Kubectl

0
153

Het bekijken van Pod-logboeken is vaak de eerste stap bij het diagnosticeren van een probleem met uw cluster& #8217;s werklast. Hier leest u hoe u Kubectl gebruikt om logs live naar uw terminal te streamen, zodat u de uitvoer van uw toepassing kunt inspecteren.

Aan de slag

Maak zeker dat u Kubectl hebt geïnstalleerd en verbonden met uw cluster. U kunt een Kubeconfig-bestand specificeren door de KUBECONFIG-omgevingsvariabele in uw shell in te stellen:

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

Gebruik vervolgens Kubectl om uw Pods weer te geven:

kubectl get pods

Vergeet niet om de –namespace vlag toe te voegen wanneer uw Pods buiten de standaard naamruimte leven:

kubectl –namespace my-namespace get pods

Het toevoegen van een tijdelijke alias aan uw shell is een goede manier om te verkorten deze stap, om u te helpen verschillende opdrachten op dezelfde naamruimte uit te voeren:

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

Toegang tot podlogboeken

Met de opdracht kubectl logs kunt u de logboeken inspecteren die zijn geproduceerd door een Pod:

kubectl-logboeken pod-naam Advertentie

De bestaande logboeken van de Pod worden naar uw terminal verzonden. Als de pod uit meer dan één container is gevormd, moet u ook de naam opgeven van de container die u wilt inspecteren:

kubectl logt podnaam containernaam

U kunt ook de vlag –all-containers instellen om logregels op te nemen die zijn geproduceerd door een van de containers in de Pod. Pas op dat u uitgebreide en herhaalde uitvoer kunt zien wanneer deze vlag wordt gebruikt tegen een drukke pod:

kubectl logs pod-name –all-containers

U kunt ook de logboeken van een set pods met een gegeven label. Hiermee kunt u logboeken van verschillende pods verzamelen, op voorwaarde dat ze allemaal hetzelfde label hebben:

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

Logboeken continu streamen

De opdracht plain logs zendt de momenteel opgeslagen Pod-logs uit en uitgangen. Voeg de vlag -f (–follow) toe aan de opdracht om de logs te volgen en live naar uw terminal te streamen.

Kubectl zal elke nieuwe logregel naar uw terminal sturen totdat u de opdracht stopt met Ctrl+ C. Dit komt overeen met het gebruik van tail -f met een lokaal logbestand in een niet-gecontaineriseerde omgeving.

Oudere logbestanden bekijken

kubectl-logboeken bevatten geen logregels die zijn geproduceerd door oude containers die ooit Pod-leden waren maar sindsdien zijn vervangen. Deze logboeken zijn toegankelijk door de vlag -p (–vorige) toe te voegen.

Advertentie

Kubectl zal dan het volledige opgeslagen logboek voor de Pod weergeven, inclusief regels die zijn uitgezonden door containers die zijn sindsdien beëindigd.

Recente logboeken ophalen

Soms hoeft u niet de hele logstroom te zien. Kubectl ondersteunt een –since-vlag die logregels weergeeft die na een bepaalde tijd zijn uitgezonden:

kubectl logs pod-name –since=2h

Deze opdracht toont de log-uitvoer van pod-name die is geproduceerd in de afgelopen twee uur. Een andere variant, –since-time, ondersteunt een RFC3339-compliant tijdstempeltekenreeks in plaats van de hierboven getoonde relatieve tijdexpressie.

De –tail vlag is een andere optie voor het condenseren van logs. Dit beperkt het aantal regels dat wordt weergegeven, waardoor een volledige terminal wordt vermeden wanneer u alleen zeer recente uitvoer hoeft te zien:

# Toont de laatste 10 regels van de log kubectl logs pod-name –tail=10

Kubectl toont standaard geen tijdstempels voor regels, omdat veel toepassingen deze al in hun loguitvoer opnemen. Voeg de vlag –timestamps toe om Kubectl tijdstempels toe te voegen aan het begin van regels wanneer uw werkbelasting deze niet biedt.

U kunt de geïnspecteerde pod- en containernamen ook toevoegen aan logregels. Deze functionaliteit wordt geactiveerd met de –prefix vlag. Het kan worden gecombineerd met –timestamps om de tijd weer te geven waarop elke regel is gemaakt en de bron waaruit deze afkomstig is.

Logboeken openen vanuit andere bronnen Typen

kubectl-logboeken werken met implementatie- en taakbronnen naast pods:

kubectl registreert taak/mijn-taak kubectl-logboeken implementatie/mijn-deployment Advertentie

U krijgt de logboeken van de eerste container binnen de taak of implementatie. Gebruik de vlag –all-containers om logboeken weer te geven die zijn gemaakt door een van de overeenkomende containers. U kunt alle hierboven beschreven vlaggen gebruiken, of u nu een pod, implementatie of taak bekijkt.

Meer geavanceerd logbeheer

< p>Kubectl bevat geen manier om uw logboeken te filteren, te doorzoeken of te transformeren. Het is het beste om de uitvoer van kubectl-logboeken door te sturen naar gevestigde terminaltools zoals awk, grep of sed voor dit doel.

kubectl logt mijn-pod | grep search-expression

Gebruik op dezelfde manier de bestaande omleidingsfuncties in uw shell om logs op te slaan in een bestand:

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

Samenvatting

Kubectl geeft je toegang tot logboeken van je bronnen, hetzij per container of in totaal. U kunt een momentopname bekijken van de momenteel verzamelde logboeken, voortdurend nieuwe regels naar uw terminal streamen en toegang krijgen tot historische regels die zijn uitgezonden door beëindigde containers.

De opdracht wordt geleverd met een aantal beperkte aanpassingsopties, waaronder een beperking van het aantal regels en een simplistische datum filteren. Wanneer meer veeleisende parsing nodig is, pijpt u de uitvoer naar Unix-terminalopdrachten om snel uw logboeken te analyseren en de oorzaken van fouten in uw toepassingen te vinden.

Advertentie

Kubectl verzamelt logboeken van de standaarduitvoer en foutstromen van uw containers. Het is belangrijk om ervoor te zorgen dat u de uitvoer correct naar deze streams schrijft, aangezien een verkeerd geconfigureerde container zal resulteren in lege uitvoer wanneer u kubectl-logboeken uitvoert.