Blog overzicht

Kubernetes tools: Geavanceerde monitoring en logging

Met Kubernetes kun je toepassingen in de cloud efficiënt schalen, beheren en uitrollen. Dit orkestratieplatform helpt je de schaal van de cloud volledig benutten en houdt de microservices die jouw toepassingen vormen gezond. Maar zelfs op het meest stabiele platform kan iets mis gaan. Met deze geavanceerde monitoring- en loggingtools hou je zelf ook een oogje in het zeil.

In een ‘klassieke’ IT-omgeving richt je logboeken en monitoring in op basis van MAC-adressen, IP-adressen en apparaatnamen. Met Kubernetes gaat die aanpak niet werken. Dit platform brengt nodes (individuele (virtuele) machines) samen in clusters waarop microservices draaien. Die services worden gevormd door containers die Kubernetes uitvoert door een pod deployment dynamisch te verdelen over een cluster. Binnen die context zijn de IP-adressen, MAC-adressen en andere gegevens niet relevant.

Stabiel en schaalbaar

Kubernetes zorgt dat een cloudapplicatie stabiel blijft door pods gezond te houden. Als een pod niet meer werkt, herstart K8s deze automatisch op een andere node. Dat voorkomt dat een deployment vastloopt als er een node in de cloud-omgeving wegvalt. Het maakt schalen ook eenvoudig. Zo lang er nodes in het cluster beschikbaar zijn, kan het platform extra pods aanmaken. Bij een tekort aan nodes zijn extra clusters eventueel ook nog op te schalen.

Dynamische orkestratie maakt traditioneel monitoren en loggen moeilijk

Schaalbaarheid en stabiliteit zijn handig, maar door zo dynamisch met individuele (virtuele) machines om te gaan zijn traditionele adressen niet bruikbaar voor monitoring. Individuele nodes slaan logs maar tijdelijk op en data over individuele containers staat over meerdere systemen verspreid. Nu kun je natuurlijk op je handen gaan zitten en blind vertrouwen op Kubernetes, maar helaas kan er ook op dit stabiele platform van alles misgaan.

Resources monitoren op onverwachte pieken in gebruik

Stel bijvoorbeeld dat een applicatie met een geheugenlek in een container zit. Door deze bug heeft de deployment steeds meer resources nodig om hetzelfde werk te doen. Dat gaat de prestaties van het cluster beïnvloeden en kan zelfs tot extra kosten leiden als je meer resources afneemt om aan de hogere vraag naar geheugen te voldoen. Als je de gebruikstrends van je resources monitort, kun je onverwachte pieken in het gebruik detecteren en vroeg ingrijpen zodat de fout te herstellen is.

Werklast in real-time monitoren en alarmen instellen

Resources monitoren is om meerdere redenen belangrijk. Als jouw webdienst ineens heel zwaar belast wordt, kan je jouw clouddienst (tijdelijk) opschalen. Binnen K8s kun je limieten instellen waarbinnen de dienst automatisch mag schalen. Als de dienst meer nodig heeft dan de hoge limiet blijft er een risico dat je webdienst crasht. Door de werklast in real-time te monitoren en alarmen in te stellen, kun kijken of er extra resources nodig zijn en die toewijzen voor het zover is.

Netwerkverkeer analyseren

Voor de beveiliging van jouw cloud-omgeving is het loggen en monitoren van netwerkverkeer essentieel. Je kunt bijvoorbeeld instellen dat je een alarm krijgt als er herhaalde (mislukte) inlogpogingen vanaf één IP-adres afkomstig zijn. Dat kan wijzen op een brute force aanval (of een gebruiker die heel veel behoefte heeft aan support). Uit de logboeken kun je ook destilleren waar het meeste netwerkverkeer vandaan komt. Op basis van die gegevens kun je extra monitoring instellen voor verkeer dat van afwijkende adressen komt.

Kubernetes monitoring- en loggingtools

Je hebt ruim keuze aan tools als je Kubernetes wilt monitoren en loggen. Maar geen lijst van kandidaten is compleet zonder Prometheus te noemen. Deze open-source oplossing is ontwikkeld om containers en microservices te monitoren. Kubernetes heeft ingebouwde ondersteuning voor Prometheus waardoor het eenvoudig in te zetten is. Veel beheerders gebruiken Grafana in combinatie met Prometheus om de data te visualiseren.

EFK Stack

Een andere populaire combinatie bestaat uit Elasticsearch, Fluentd en Kibana. Samen vormen ze de EFK Stack. Fluentd verzamelt de logbestanden die de nodes van je Kubernetes cluster genereren en stuurt ze door naar Elasticsearch. Deze applicatie verzamelt de logbestanden en slaat ze op. Kibana visualiseert die data zodat je snel problemen kunt ontdekken.

Jaeger

Jaeger is een open-source traceringstool voor applicaties die uit microservices bestaan. Hiermee kun je de interacties tussen de microservices volgen en visualiseren. Dat helpt om problemen op te sporen en bottlenecks te achterhalen. Omdat er een Jaeger Operator beschikbaar is voor Kubernetes, kun je deze tool eenvoudig uitrollen.

Loki

Loki is een logaggregatietool dat qua inzet vergelijkbaar is met Elasticsearch in de EFK Stack. Loki slaat logbestanden op die Promtail verzamelt. De output van Loki kun je visualiseren in Grafana. Loki is geïnspireerd op Prometheus en integreert goed met deze tool. Loki, Promtail en Grafana zijn alle drie gebouwd door Grafana Labs.

cAdvisor

Google heeft de open-source tool cAdvisor ontwikkeld om resourcegebruik en prestaties te bewaken van containers. Met deze agent verzamel je statistieken over de belasting van CPU, geheugen, opslag en netwerk voor alle containers die op een node actief zijn. Helaas kan cAdvisor niet op pod-niveau meten.

5 tips voor monitoring en loggen binnen Kubernetes

Wil je snel van start met het instellen van monitoring en loggen binnen Kubernetes? Met deze 5 tips zorg je voor een goede basisopzet van jouw tools.

1. Stel jouw metriek vast – Bepaal welke meetgegevens essentieel zijn voor jouw applicaties en focus daar je aandacht op. Hoe meer onnodige data je verzamelt, hoe meer moeite het kost om daar informatie uit te halen.

2. Stel waarschuwingen in – Waarom zelf tijd verspillen aan dashboards als de computer het voor je kan doen? Stel waarschuwingen in als er drempels worden overschreden of kritieke gebeurtenissen onmiddellijk aandacht vereisen.

3. Bewaar niet alles –Te veel data bewaren is kostbaar en maakt het lastiger om relevante informatie te vinden. Bepaal welke essentiële logs je en absoluut moet bewaren.

4. Gebruik namespaces – Namespaces gebruik je niet alleen om de ontwikkeling en het beheer binnen K8s te vereenvoudigen, je kunt ze ook inzetten om monitoring- en logboekgegevens te segmenteren.

5. Beveilig je tools – Met monitoring- en loggingtools verzamel je potentieel gevoelige informatie. Zorg dat jouw tools authenticatie vereisen, gebruik Role-Based Access Control (RBAC) en overweeg de inzet van encryptie.

Zelfs een stabiele omgeving vraagt (af en toe) om aandacht

Kubernetes maakt jouw cloud-omgeving stabiel en schaalbaar. Maar zelfs de beste omgeving vraagt (af en toe) om aandacht. Gebruik monitoring en loggen voor Kubernetes om te zorgen dat jouw cloud naar wens blijft werken.


Beoordeel dit artikel

Deel dit artikel

Gerelateerde artikelen

    • Leestijd: 7 minuten

Blog overzicht

Auteur: TIP-redactie

Is de auteursnaam die we gebruiken wanneer een blogpost in teamverband door meerdere TransIP’ers is samengesteld. Denk bijvoorbeeld aan een eventverslag of onze Recommends.