Cloud Infrastructuur
January 11, 2024

Kubernetes Logging: Basiscommando's, Handige Tools en Geavanceerde Oplossingen

In de dynamische wereld van Kubernetes zijn logs essentieel voor het beheren en troubleshooten van applicaties en services in containers. We verkennen de basiscommando's voor het bekijken van logs in Kubernetes, enkele nuttige tools, en geavanceerde loggingsoplossingen zoals de ELK Stack en cloudproviderdiensten.

Basiscommando's in Kubernetes

kubectl logs

Gebruik kubectl logs om logs van een specifieke pod op te halen. Basisgebruik:


kubectl logs [POD-NAAM]

Minder gekend, maar zeker even handig is het bekijken van logs van één van de pods van een deployment, een service of een stateful set.


kubectl logs service/[SERVICE-NAAM]
kubectl logs deploy/[DEPLOYMENT-NAAM]
kubectl logs sts/[STATEFULSET-NAAM]


Belangrijke Parameters

  • {% c-line %}-f{% c-line-end %}: Volg logs in real-time - "follow". Gebruik Ctrl-C om dit te stoppen.
  • {% c-line %}-p{% c-line-end %}: Bekijk logs van een niet-actieve pod - "previous". Dit werkt maar een bepaalde tijd. Eens de logs verwijderd zijn van de node, kan je die niet meer terughalen.

Handige Tools

De functionaliteit van kubectl logs is ten alle tijde beschikbaar, en is zeker handig als basistool. Echter, soms wil je een iets flexibere tool, met voornamelijk minder typwerk op de CLI.

Stern en kubetail

Zowel Stern als kubetail zijn tools voor het volgen van logs van meerdere pods, met ondersteuning voor filtering op podnamen, container-namen en labels. Handig om een aantal pods tegelijk op te volgen. Stern pikt ook nieuwe pods op die tijdens het uitvoeren erbij komen.

K9s

K9s biedt een interactieve UI voor het beheren van Kubernetes, inclusief het bekijken van logs en het uitvoeren van commando's binnen pods.

Geavanceerde Loggingsoplossingen

De tools hierboven kunnen enkel de logs weergeven die op de nodes zelf bijgehouden worden. Dit is echter beperkt in tijd en volume. Willen we de logs langere tijd bewaren, dan moeten we naar oplossingen die hiervoor specifiek gebouwd zijn.

ELK Stack

Een ELK stack is een klassieker. Deze is niet specifiek aan kubernetes gebonden, maar wordt wel veel gebruikt. Een ELK Stack combineert Elasticsearch, Logstash en Kibana voor krachtig logbeheer.

  • Elasticsearch: Zoek- en analysemotor.
  • Logstash: Verzamelt, verwerkt en stuurt logs door.
  • Kibana: Web-interface voor visualisatie en zoekopdrachten.Er zijn ondertussen al betere log-shipping tools zoals bvb Fluentd, fluentbit en Vector. De naam ELK blijft echter behouden.Hou er rekening mee dat een ELK-stack vrij snel groot (en duur) kan worden, en sterk afhankelijk is van de hoeveelheid data die verwerkt moet worden.

Cloudprovider Loggingsoplossingen

De cloud-providers hebben hun eigen oplossingen voor het bijhouden en opvolgen van logs. Binnen AWS wordt Cloudwatch geintegreerd met Kubernetes voor het monitoren en analyseren van containerlogs. De logs worden doorzoekbaar zoals elke andere log die naar cloudwatch gestuurd wordt. Er kunnen verdere acties op ondernomen worden.Azure biedt log-collectie en analyse voor Azure Kubernetes Service aan via hun Log Monitoring product. De logs worden doorzoekbaar via queries in de UI.Google Cloud's Operations Suite biedt logging aan als optie op GKE clusters. De logs worden beschikbaar via "Log Explorer".Zowel een ELk stack als alledrie de providers geven je de mogelijkheid om met een query-achtige taal logs te gaan doorzoeken, filteren en aggregeren. Als je het wenst, kan je ook metrieken en alarmen definieren op basis van de inhoud van de logs.

Third-party

Er zijn veel aanbieders van extra oplossingen bovenop de logging van Kubernetes. Dit zijn managed SaaS platformen die de logs gaan verzamelen, verwerken en terug beschikbaar stellen voor je gebruikers. De lijst is echter te lang om op te sommen en de keuze is zeer afhankelijk van de gewenste functionaliteiten.

Opzet en Configuratie

Het opzetten en configureren van geavanceerde loggingsoplossingen zoals ELK en cloudproviderdiensten vereist specifieke kennis. Deze systemen moeten correct worden geconfigureerd om efficiënt te functioneren en waardevolle inzichten te bieden. Verkeerde configuratie kan ervoor zorgen dat je bepaalde logs mist, of dat je kosten de hoogte in schieten. Ook kunnen audit-regels (voor bv ISO or SOC2 certificiëring) specifieke wensen en eisen opleggen aan de structuur, de retentie en de backups van logs.

Conclusie

Effectief logbeheer in Kubernetes is cruciaal voor het onderhouden en troubleshooten van applicaties. Basiscommando's, gecombineerd met geavanceerde tools zoals Stern, K9s, de ELK Stack en cloudgebaseerde oplossingen, bieden uitgebreide mogelijkheden voor loganalyse en -beheer. Voor complexere setups is het echter aan te raden professionals in te huren om een optimale configuratie en gebruik van deze systemen te waarborgen.

Over Krane Labs

Uncomplicate Kubernetes

Hedendaagse hosting voor uw apps en sites. Schaalbaar. Op uw publieke cloud. Zonder veel gedoe. Met support. Zonder consulting. Met vaste kost.

Onze laatste blogposts