AKS monitoring en management

In dit artikel geven we je op een hoog niveau meer inzicht in de mogelijkheden van het monitoren van (Azure) resources, maar AKS-clusters in het bijzonder.

 

Martin Pronk, Intercept

 

In dit artikel geven we je op een hoog niveau meer inzicht in de mogelijkheden van het monitoren van (Azure) resources, maar AKS-clusters in het bijzonder. De tools die ik in dit artikel beschrijf zijn slechts het topje van de ijsberg. Er zijn namelijk zoveel tools in de markt om resources te monitoren en de mogelijkheden hiervan zijn eindeloos. Het opzetten van monitoring kost tijd en moeite. Het is daarom ook het beste om de implementatie van monitoring op te nemen in het ontwerp of de ontwikkeling van de applicatie en deze continu te verfijnen en te verbeteren in het DevOps proces.

Waarom zouden we moeten monitoren?

Stel dat je een webshop applicatie gebouwd hebt en deze opgedeeld is in verschillende microservices (kleine stukjes van processen), zoals een specifieke microservice om artikelen op een bestelling te plaatsen, een afrekenproces en een betalingsproces zodat de klant kan betalen voor de artikelen. Iedere Microservices is cruciaal voor de goede werking van de webshop, maar wat als één van deze microservices kapot gaat zonder dat je het zelf door hebt? Dan kan je bedrijf klanten verliezen, omdat ze de producten ergens anders gaan bestellen. Doordat je webshop niet bereikbaar is verlies je de klanten en gaan de orders naar de concurrent.

Dit is een van de redenen waarom monitoring zo belangrijk is. Monitoring verteld je meer over de beschikbaarheid van de applicatie, de gezondheid van de infrastructuur en over de prestaties en uiteindelijk over de gezondheid van het bedrijf.

Voordat je begint.

Als je het artikel “Azure Kubernetes cluster set up’’ hebt gevolgd dan heb je waarschijnlijk nu je eerste Azure Kubernetes Service cluster opgezet. Ook wel bekend als AKS, en heb je waarschijnlijk al enkele applicaties draaien hierop. Goed gedaan! Maar wat is nu de logische stap voor jouw AKS omgeving? Ik heb een suggestie: monitoring en beheer.
Dus laten we beginnen met de basis. Hiervoor moeten er drie command-line tools geïnstalleerd worden:

  1. AZ CLI: De Azure CLI is een set van commando’s die gebruikt worden om resources aan te maken en te beheren. Je kunt het hier downloaden en het is beschikbaar voor Windows, Linux en MacOS omgevingen.
  2. Kubectl: Dit is de command-line tool om jouw AKS omgeving te besturen en te beheren. Je kunt deze tool hier downloaden en is ook beschikbaar voor MacOS, Linux en Windows omgevingen.
  3. Helm: Helm helpt je bij het beheren van Kubernetes applicaties. Helm Charts helpt bij het definiëren, installeren en upgraden van zelfs de meest complexe Kubernetes applicatie. Je kunt Helm hier downloaden en is beschikbaar voor Linux, Windows en MacOS.

Wanneer je AKS deployed worden er automatisch een metric server en een dasboard geïnstalleerd. Om deze te zien moet je eerst verbinding maken met je cluster en hier hebben we het az-commando voor nodig. Open een command shell en voer de volgende commando’s uit:

‘az login’ opent een browsersessie om in te loggen op Microsoft Azure en je kunt deze sessie sluiten zodra je bent ingelogd. De ‘az aks’ opdracht wordt gebruikt om verbinding te maken met je AKS-cluster. Als je 1 subscriptie hebt hoef je de optie ‘subscription’ niet te gebruiken. Om te testen of de verbinding succesvol is gemaakt kun je het volgende commando uitvoeren:


De output zou je moeten vertellen dat de master, replica service, Core DNS en Metrics server draaien. Het geeft je ook een hint hoe je cluster problemen diagnosticeert.

Metrics Server

Als we hier mee klaar zijn kunnen we beginnen met de absolute basis van het monitoren van het cluster. Zoals eerder vermeld, wordt de metrics server geleverd met de AKS installatie en kan hij je meer vertellen over het geheugen- en CPU gebruik van nodes en pods. De metrics server wordt ook gebruikt voor Horizontal Pod Autoscaling, maar dit valt buiten het bereik van dit onderwerp. Je kunt de data uit de metrics server opvragen met de volgende commando’s:


Azure Monitor

Azure monitor maximaliseert de beschikbaarheid en prestatie van je applicaties en diensten door het leveren van een uitgebreide oplossing voor het verzamelen, analyseren en handelen op basis van telemetrie van jouw cloud en on-premises omgevingen.

Je kunt de gezondheid van jouw AKS cluster zien in Azure monitor door te navigeren in het Azure Portaal naar Monitor -> Workbooks -> Multi Cluster Overview.  Dan krijg je onderstaand venster te zien:


Daarnaast is het ook mogelijk om een eigen workbook te creëren op basis van eigen gedefinieerde monitor vereisten. In dit deelvenster kun je verder kiezen voor; Cluster Performance, Disk IO en Capacity en Network.

Een andere manier om hier te komen en meer inzage te krijgen over de gezondheid van jouw AKS cluster is door te navigeren in de Azure portal naar: Kubernetes Service -> SelectYourCluster -> Insights.


Probeer het maar eens en klik eens rond. Zorg er voor dat je de dropdown; View Workbooks niet mist.

Om verdere inzage te krijgen in jouw applicatie kun je ook overwegen om een instrumentatiepakket (SDK) in de toepassing te installeren. Wil je hier meer informatie over? Bekijk dan deze link.

Alternatief 3rd party tools

Er zijn ook veel 3rd party tools (betaalde oplossingen) in de markt voor full-stack (end-to-end) monitoring in Azure inclusief AKS-cluster en on-premise resources. Om er een paar op te noemen: NewRelic, Datadog of Dynatrace. Dit zijn zogenaamde Application Performance Management (APM) tools, ook wel bekend als Application Performance Monitoring tools. APM staat voor het in de gaten houden van applicaties vanuit het gebruikersperspectief maar ook de back-end. Zodat de problemen en knelpunten in de applicaties vroegtijdig op te sporen zijn.

De mogelijkheid bestaat dat je al in bezit bent van een van bovenstaande tools, of een vergelijkbare tool. Kijk op de leverancierspagina van deze tool of deze ondersteuning biedt of een integratie beschikbaar heeft voor Azure.

Weave Scope

Een ander leuk open source programma is Weave Scope. Weave Scope is een visualisatie en monitoring tool voor Docker en Kubernetes en kan ook gebruikt worden om problemen te diagnosticeren. Om Weave Scope te installeren moet je onderstaande commando uitvoeren:

Om Weave Scope uit te voeren moet je onderstaand commando uitvoeren en daarna een browsersessie openen naar localhost:4040.

Let op: Stel de scope-service niet bloot aan het internet, bijvoorbeeld door het type te wijzigen naar NodePort of LoadBalancer. Scope geeft iedereen toegang tot de gebruikersinterface controle over de hosts en containers.




Prometheus en Grafana

Een veel gebruikte combinatie is Prometheus en Grafana. Prometheus is een tijdreeks database of metric server en Grafana wordt gebruikt om metrics uit verschillende databronnen, waaronder Prometheus, te visualiseren. Voor de installatie van Prometheus en Grafana wordt gebruik gemaakt van Helm. Je kunt de gevraagde helm charts op het internet vinden.
Voor dit voorbeeld heb ik gebruik gemaakt van de helm repository grafana en deze wordt alleen lokaal uitgevoerd.
Je kunt de volgende stappen uitvoeren om Prometheus en Grafana te installeren:
Je moet Prometheus toevoegen als gegevensbron in Grafana. Je kunt hier lezen hoe je dit het makkelijkste kan doen. Als je de gegevensbron hebt toegevoegd ben je klaar om het eerste dashboard te maken. Als je er zeker van bent dat beide oplossingen werken voor jou kan je er voor kiezen om een ingress-controller te creëren om Grafana naar de buitenwereld te bedienen, met Grafana als front-end en Prometheus als back-end.



Er is een grote community die de dashboards ontwikkelt die je in je eigen Grafana omgeving kan gebruiken. Je kunt ze hier vinden en hierbij een link naar een artikel waar je kan lezen hoe je dashboards kan importeren in Grafana. Natuurlijk is Prometheus niet de enige gegevensbron die je aan Grafana kan toevoegen, er zijn er meer zoals: Azure Monitor, MySQL, Graphite, Elasticsearch etc.

Management met Kubectl

Om je AKS cluster te beheren zul je moeten werken met de command line tool kubectl. Sinds enige tijd kun je echter ook resources beheren via de Azure portal. Houd er rekening mee dat deze functionaliteit nog steeds in de preview fase is, wat betekent dat je het nog niet in een productieomgeving zou moeten gebruiken.

Als je meer wilt weten over kubectl raad ik je aan om eens een kijkje te nemen op de kubectl cheat sheet.


Nog een laatste woord …

Als het je gelukt is om dit artikel tot het einde te lezen, dan zou je een goede basis moeten hebben om je AKS cluster te monitoren. Natuurlijk ben je niet gebonden aan een bepaald product of hulpmiddel dat we in dit artikel hebben benoemd. Als je tevreden bent met product X dan is dat prima. Als je tevreden bent met XYZ of een andere combinatie is dat natuurlijk ook geen probleem.

Het komt erop neer dat wanneer je zeker wilt zijn van een goede beschikbaarheid van je applicaties voor je bedrijf, dat je moet monitoren!
Als je nog wat tijd over hebt, neem dan eens een kijkje op onze evenementenpagina, waar je je gratis kan aanmelden voor bijvoorbeeld een Deep Dive AKS sessie.

Intercept wenst je veel succes met het implementeren van monitoring, en als wij ergens mee kunnen helpen neem dan gerust contact met ons op.