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. 

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!

Tags

  • Azure Kubernetes Services
  • Containers

Geschreven door

Richard Hooper

Richard Hooper

Azure Architect bij Intercept | Microsoft Certified Trainer | Microsoft MVP

Wellicht ook interessant:

  • 20201028 Intercept Illustratie Bij Artikel Windows Containers In Een Linux Wereld 01

    Windows containers in een Linux wereld

    Een veel voorkomende vraag wanneer iemand op zoek is naar het transformeren/containeriseren van zijn oplossing is; ‘ik draai nu op een Windows systeem: moet ik Windows containers gebruiken of moet ik kiezen voor Linux containers? En dit is inderdaad een hele terechte vraag.

    • Leesduur 8min
    Meer over Windows containers in een Linux wereld
  • Azure Kubernetes Cluster Set Up

    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.

    • Leesduur 6min
    Meer over Best practices voor het opzetten van een AKS cluster
  • 202011111 Intercept Illustratie Bij Artikel Aks Monitoring A (1)

    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.

    • Leesduur 9min
    Meer over AKS monitoring en management
  • Ingress Name (2)

    Ingress, Services, Pods & Namespaces.

    Nadat je de container technologie hebt omarmd en hebt besloten dat Kubernetes gaat gebruiken, moet je aan de bak en je erin gaan verdiepen. Er is namelijk veel te leren, maar een aantal belangrijke concepten zoals Services, Pods, Ingresses en namespaces zijn van cruciaal belang voor je succes.

    • Leesduur 8min
    Meer over Ingress, Services, Pods & Namespaces.
  • Aks Security

    AKS Security

    Iedereen werkt hard aan het nieuwe platform en dan vraagt iemand... "Hoe zit het met de veiligheid?"

    • Leesduur 10min
    Meer over AKS Security
  • Ebook AKS 6

    Het Intercept AKS e-book

    Dit e-book geeft je alle informatie die je moet weten om te beslissen of Azure Kubernetes een goede match met jouw software architectuur is. Leer daarnaast ook van onze best practices omtrent o.a. security, update scenario's en het monitoren en managen van AKS clusters.

    • Leesduur 2min
    Meer over Het Intercept AKS e-book
  • 20201208 Intercept Illustratie Bij Artikel Microservices Def Verkleind

    Wat zijn Microservices op AKS?

    Veel mensen praten over Microservices en Service Mesch, maar wat is dit? In dit artikel kijken we naar wat Microservices zijn, wat een Service Mesh is en wat je ermee kunt doen en tot slot of je het nu wel echt nodig hebt

    • Leesduur 8min
    Meer over Wat zijn Microservices op AKS?
  • Going Hybris

    Hybride deployments met Kubernetes

    Ik hoor en zie online dat veel mensen praten over Microservices en Service Mesch, maar wat is dit? In dit artikel kijken we naar wat Microservices zijn, wat een Service Mesh is en wat je ermee kunt doen en tot slot of je het nu wel echt nodig hebt

    • Leesduur 7min
    Meer over Hybride deployments met Kubernetes
  • 20200819 Intcercept Artikel Illustratie Aks Cluster

    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.

    • Leesduur 6min
    Meer over Best practices voor het opzetten van een AKS cluster