Blog Cloud native Infrastructuur Azure

Update scenario's op AKS

Veel mensen vergeten het patchen van het work OS in de overtuiging dat het door Microsoft wordt geregeld. Dit is niet het geval. 

Auteur

Principal Azure Architect

Leestijd 1 minuten. Gepubliceerd: 10 december 2020

 

In dit artikel ga ik het hebben over een heel belangrijk onderwerp: updates. Als ik zeg updates, dan bedoel ik niet alleen Kubernetes updates, maar ook de worker node OS updates. Veel mensen vergeten het patchen van het work OS in de overtuiging dat het door Microsoft wordt geregeld. Dit is niet het geval. Het is op dit moment de verantwoordelijkheid van de klant om het cluster up-to-date te houden. Hieronder zal ik een vraag beantwoorden die veel aan mij gevraagd wordt: waarom zou ik mijn cluster moeten updaten? Ik zal in dit artikel ook de verschillende update mogelijkheden uitleggen, wat je nu precies zelf moet updaten en hoe je dit het makkelijkste kan doen.

Waarom zou ik mijn cluster updaten?

Kubernetes wordt snel ontwikkeld. Elke drie tot vier maanden komt er een nieuwe release uit. Tot voor kort werd elke versie slechts 9 maanden officieel ondersteund, met Kubernetes 1.19 is dit toegenomen tot 12 maanden. Binnen deze kleine releases kun je nieuwe mogelijkheden en verbeteringen verwachten en soms ook baanbrekende veranderingen, zoals API- versiewijzigingen, waardoor je implementatie niet meer werkt. Patches worden vaker uitgebracht, soms wekelijks, om kritische bugs en beveiligingslekken te verhelpen. Er is ook geen Long Term Service (LTS) release van Kubernetes. Dit klinkt als een nachtmerrie en waarschijnlijk denk je nu; waarom zou ik updaten als de kans aanwezig is dat er dingen kapot gaan. Ten eerste; support. Azure ondersteunt alleen de laatste 3 versies van Kubernetes die AKS algemeen beschikbaar heeft gesteld (GA). Wat dit betekent is dat als AKS eenmaal een versie van Kubernetes heeft uitgebracht voor alle ondersteunde Azure regio’s het geclassificeerd wordt als GA. Dus, zeg maar versie 1:19 is GA geworden voor AKS, alleen versie 1.19, 1.18 en 1.17 minor versies worden ondersteund. AKS ondersteunt slechts twee patches. Voor versie 1.19 kun je dus alleen de laatste 2 patches gebruiken, 1.19.3 en 19.1. 1.19.0 werd ondersteund totdat patch 1.19.3 uitkwam. Hopelijk is het duidelijk en snap je wat ik bedoel.

Om nog even samen te vatten: AKS ondersteunt alleen de laatste 2 kleine versies en de laatste 2 patchversies die GA zijn. Als je ondersteuning van Microsoft nodig hebt en geen gebruik maakt van ondersteunde versies, zullen ze je eerst vragen om het cluster te updaten.

 

Update van het AKS controle Plan – AKS control plane update

In AKS heb je iets dat het control plane wordt genoemd. Dit is eigenlijk alleen maar de master nodes en wordt verzorgd door Microsoft, wel afgezien de updates. Er is geen ondersteunde automatische manier om het AKS control plane te updaten en dat is waarschijnlijk een goede zaak. Je moet altijd eerst testen of je applicatie nog werkt en of hij nog inzetbaar is op een nieuwe versie voordat je je productiesystemen gaat updaten.

Je kunt de control plane updaten via de Azure portal of via Azure CLI. Natuurlijk is het een stuk eenvoudiger via de portal, omdat het slechts een drop down lijst is (zie onderstaande afbeelding).

Bij het uitvoeren van een update van het control plane regelt Microsoft alles door de componenten van het control plane van jouw cluster te updaten. Er is niet veel bekend over wat ze doen, maar als je even wacht dan zul je zien dat hij zo is geupdate.

 

AKS Node update

Werk nodes daarentegen hebben verschillende soorten updates nodig. Hieronder ga ik je meer vertellen over de Kubernetes versie updates. In de volgende alinea ga ik dieper in op de Node OS updates.

Net zoals bij de controle plane kun je zowel de Azure Portal als de Azure CLI gebruiken om de nodes te updaten. In AKS zit elke node in iets wat ook wel een Node Pool wordt genoemd (denk aan Virtual Machine Scale Set). AKS ondersteunt ook meerdere node-pools en ze kunnen Windows of Linux zijn, maar niet beide in dezelfde node-pool.
Je kunt alleen een node-pool upgraden naar de versie van de control plan of lager. Dus, stel dat je control plane op Kubernetes versie 1.18.10 draait. Dan kun je jouw nodepool alleen upgraden naar 1.18.10, maar je kunt ze ook upgraden naar 1.18.8. Je kunt ze niet zo upgraden naar 1.19.3, alleen als je eerst de control plane upgrade.

Wanneer je een upgrade uitvoert zal AKS iets toevoegen dat een buffer node wordt genoemd. Deze buffer node, normaal gesproken een, kan worden geconfigureerd met behulp van een functie genaamd max surge, wordt gemaakt in je cluster. Deze buffer node draait de nieuwste versie van Kubernetes.

Deze cluster zal dan één of meerdere van de oudere nodes, afhankelijk van de max surge instelling,  leeg laten lopen om te helpen bij het minimaliseren van de verstoring van het uitvoeren van de applicaties. Wanneer de oudere node volledig leeg is, wordt deze opnieuw geïllustreerd met de nieuwste VM-image van Microsoft met de geselecteerde Kubernetes-versie. Deze reimaged node wordt dan de buffer node. Dit gaat zo door totdat je nog één node over hebt, zodra deze volledig is leeggehaald wordt deze verwijderd, waarbij het aantal bestaande worker node’s behouden blijft.

Dit hele proces kan enige tijd in beslag nemen, afhankelijk van de werklast. Elke node heeft een totaal toegestane tijd voor upgrades die 10 minuten is. Dus wanneer je de upgrade doet doe dan 10 keer het aantal nodes dat je moet upgraden om zeker te zijn dat je genoeg tijd hebt voor de update.

 

AKS node OS updates

Je weet nu meer over control plane updates en node updates voor Kubernetes versies, maar je hebt nog steeds het besturingssysteem dat moet worden gepatcht, net als elke server die je normaal gesproken zou draaien. Gelukkig hoef je deze patches niet zelf te installeren. Microsoft regelt dit, in ieder geval voor de Linux nodes. Het enige wat je hoeft te doen is de Linux Node te herstarten om de updates in werking te laten treden. Windows daarentegen is een beetje anders. Laten we eerst eens kijken naar de Linux nodes.

De Linux nodes zijn geconfigureerd om elke nacht te controleren op update. Als er een beveiligings- of kernel – update beschikbaar is, wordt deze update automatisch gedownload en geïnstalleerd. Sommige van deze updates, zoals kernel updates, vereisen een reboot. Wanneer een node een reboot nodig heeft, wordt er een bestand met de naam rebout- requested onder /var/run/ aangemaakt. Je kunt je eigen oplossing maken om dit bestand te monitoren of je kunt gebruik maken van een open source tool genaamd KURED (Kubernetes Reboot Deamon) van Weaveworks. Als je dit wilt installeren volg dan de instructies van hun GitHub repo. Het laat je zelfs toe om te plannen en een bericht te sturen naar Slack of Teams.

Voor Windows node pools moet je node OS image upgraden. Elke week stelt Microsoft een nieuwe node-image beschikbaar voor zowel Windows als Linux. Je kunt dan de Azure CLI gebruiken om de nodes in je cluster te upgraden. Je bent in staat om ofwel het volledige cluster te doen ofwel enkel een node pool. Op dit moment is er geen manier om dit te automatiseren, hopelijk komt dit ooit nog, maar tot die tijd kun je kijken naar het gebruik van logic apps of Azure automatisering om dit te doen.

De laatste optie je hebt is het updaten van de Kubernetes versie op je node pools. Zoals eerder benoemd, wanneer je Kubernetes upgrade, creëert het nieuwe nodes met de laatste image versie van de door jouw geslecteerde Kubernetes-versie. Zodat je een nieuwe node-OS-image krijgt met alle beveiligingspatches.

Wil je meer lezen over AKS? In de komende weken gaan we meer artikelen schrijven over dit onderwerp. Wil je dit niet missen? Schrijf je dan hier in voor onze Intercept Insights. Dan houden we je op de hoogte van de laatste nieuwsberichten.

 

Dit artikel is onderdeel van een reeks 

Lees in dit vervolg artikel alles over Linux vs. Windows Containers.

Vorige artikelen teruglezen? Klik hier:
1. De evolutie van AKS
2. Hybride deployments met Kubernetes
3. Microservices op AKS


Wil je niets missen? Schrijf je dan hier in voor onze Intercept Insights. Dan houden we je op de hoogte van de laatste nieuwsberichten.


Bezoek onze AKS workshop

Leer nog meer over AKS door onze interactieve AKS workshop. In 1.5 uur ontvang jij de voordelen en de best practices om jouw omgeving efficiënter te maken. Middels veelvoorkomende AKS uitdagingen ben jij klaar voor AKS. Klik hier voor data en meld je aan!