Best practices voor het opzetten van een AKS cluster

Kubernetes is “hot & happening”, vrijwel iedereen wil er mee aan de slag. Het aanmaken van een AKS-cluster is zo gedaan, maar gaat dat ook zo makkelijk als je Kubernetes echt in productie wilt nemen? In dit artikel geven wij belangrijke tips en best-practices voor het opzetten en gebruiken van een AKS-productie omgeving.

 

Wolter Kamphuis, Intercept

Voordat je begint

Het aanmaken van een AKS-cluster is makkelijk en er zijn meer dan genoeg handleidingen online te vinden. Bijvoorbeeld de Microsoft handleidingen op https://docs.microsoft.com/en-us/azure/aks/ zijn volledig en altijd up-to-date. Maar er zijn er vier belangrijke keuzes die je zal moeten maken voordat je een productie cluster aanmaakt.

1. Het type VM

Bij het maken van een AKS-cluster moet je opgeven uit welk type VM het cluster moet bestaan. Dit type VM is naderhand niet meer te wijzigen. Denk dus goed na over welk type VM in jouw situatie het beste voldoet. Vergeet niet dat naast CPU en geheugen er ook een limiet is op het aantal disks en IOPS per type VM. Dit kan mogelijk een beperking zijn als je applicaties veel gebruik maken van storage.

 

2. Het netwerk model

Een AKS-cluster kent twee netwerk modellen, Basic en Advanced Networking. Ook het netwerk model is naderhand niet meer te wijzigen. Het Basic netwerk model is, zoals de naam al zegt, beperkt qua mogelijkheden. Zo zijn VPN verbindingen naar het cluster niet mogelijk en kan het cluster niet naar andere virtuele netwerken verbinden. Bij het Advanced Networking model is dit wel mogelijk maar moet je wel rekening houden met het gebruik van meer IP-adressen. Voor meer informatie hierover, bekijk deze link

 

3. Aantal pods per node

Nog een setting die je direct bij het aanmaken van het cluster moet opgeven, het maximale aantal pods per node. Bij het Advanced Netwerk model (welke je waarschijnlijk wilt gebruiken) heeft AKS een standaard limiet van 30 pods per node. Dit lijkt misschien veel maar dat valt erg tegen. Een leeg cluster heeft al snel 10-20 pods voor zichzelf, dit geeft maar weinig ruimte voor jouw workload. Alleen bij het aanmaken van een cluster is deze limiet op te heffen tot maximaal 250 pods per node. Let wel op: dit kost je dan ook 250 IP-adressen per node dus zorg dat je subnet groot genoeg is.

 

4. Kubernetes RBAC met Azure AD

Binnen Azure geldt het RBAC model, elke Azure AD gebruiker is gekoppeld aan een rol en heeft hierbij de rechten die door deze rol worden verstrekt. Dit geldt niet voor een AKS-cluster, elke gebruiker met toegang tot het cluster maakt gebruik van hetzelfde “admin” account. Dit is uiteraard niet wenselijk op een productie cluster. Daarom, koppel het cluster aan de Azure AD. Hiermee geldt het RBAC model ook binnenin het AKS-cluster. Je kan nu in AKS per AD gebruiker een rol aangeven, bijvoorbeeld of de gebruiker lees en/of schrijfrechten heeft en tot welke namespaces de gebruiker toegang heeft. Alweer, dit is alleen mogelijk als je dit bij de uitrol van een AKS-cluster aangeeft.

Bovenstaande 4 keuzes zijn belangrijk voor het correct opzetten van een productie AKS-cluster. Echter, net als bij de rest van Azure komen er vrijwel dagelijks nieuwe features uit. Lees dan ook goed de volgende link voor de actuele best-practices voordat je een productie cluster opzet. Immers, enkele van deze features zijn alleen beschikbaar voor nieuwe cluster en kunnen niet naderhand toegevoegd worden. 

Monitoring, weet wat er speelt

Monitoring is net als bij elke andere dienst van groot belang. Door AKS te koppelen aan Log Analytics zijn vanuit de portal alle logs en metrics direct inzichtelijk. Hiermee is het niet meer nodig om zelf een monitoring tool te installeren en beheren. Naast de visuele feedback kan Log Analytics met behulp van alerts afwijkend gedrag melden en zelfs ingrijpen. Log Analytics is gratis te gebruiken, je betaalt alleen voor de storage van de logs. Voor alle informatie over het monitoren van AKS. Bekijk deze link

Grafiekjes, wie is er niet dol op:

 

 

Niet IaaS, niet PaaS maar KaaS

Een AKS-cluster is een combinatie van een IaaS en PaaS-dienst, zeg maar KaaS 🧀. Microsoft neemt de verantwoordelijkheid voor het Kubernetes cluster (PaaS), de onderliggende VMs (IaaS) is de verantwoordelijkheid van de gebruiker. Microsoft zal de updates voor de VMs wel installeren maar het daadwerkelijk rebooten en activeren van deze updates is aan de gebruiker. Gelukkig is hiervoor een prima oplossing beschikbaar in de vorm van Kured. Door Kured in het AKS-cluster te deployen en zal deze automatisch de nodes herstarten zodra dit noodzakelijk is. Zolang het cluster uit 3 of meer nodes bestaat gaat dit zonder downtime van de services, Kured zorgt hiervoor. Meer informatie over Kured is hier te vinden.

De werking van Kured, rebooten wanneer nodig: 

 

Best-practice, resource limits en resource requests

Als je een AKS-cluster in productie neemt is het van groot belang dat de verschillende workloads elkaar niet in de weg gaan zitten. Hoe voorkom je bijvoorbeeld dat een collega een applicatie deployed die het hele AKS-cluster omvertrekt? Met quota’s en resource limits.

Een beheerder kan per namespace quota’s instellen op cpu, geheugen en aantal pods. Hiermee voorkom je dat een gebruiker het hele AKS-cluster voor zichzelf claimed. Door per pod een maximum cpu en geheugen in te stellen kan een developer voorkomen dat 1 pod alle toegekende resources verbruikt.

Met Resource Requests bepaalt de developer de minimaal aanwezige resources (cpu en geheugen) voor het uitvoeren van een pod. Het AKS-cluster gebruikt deze requests voor het efficiënt verdelen van de pods over de nodes. Hiermee maak je maximaal gebruik van je AKS-cluster en voorkom je dat nodes het te druk krijgen.

Microsoft heeft een prima handleiding met betrekking tot resoure requests en resource limits. 

 

En nu verder…

Heb je de bovenstaande tips gevolgd, dan heb je prima AKS-cluster om productie loads in onder te brengen. Maar hou Microsoft goed in de gaten! AKS is continue in ontwikkeling en er komen continue nieuwe features uit. Nu nog in preview zijn auto-scaling, node-pools, keyvault integratie en nog veel meer. Microsoft zet groots in op AKS en dat is te zien.

Gerelateerde berichten