De evolutie van AKS: van Containers naar Kubernetes naar Azure Kubernetes Services (AKS)

[Azure] Kubernetes is al enige tijd hét platform voor het beheren van containers. Maar waarom is dat en wat zijn nu de voordelen van Kubernetes en managed Azure Kubernetes Service?

 

Wolter Kamphuis, Intercept

De basis: containers
De evolutie van AKS begint met containers. Eigenlijk worden ze al overal gebruikt, ook als je ze in de eerste plaats niet altijd herkent als containers. Zo is een app op je telefoon ook als een container verpakt.

Een container is een betrouwbare manier om applicaties te verpakken en beschikbaar te stellen aan meerdere omgevingen (Microsoft Azure, private datacenter of Amazon). Een container is namelijk niet afhankelijk van het platform waarop deze wordt gestart. Een container bevat de applicatie inclusief alle benodigde runtime en bibliotheken om juist te kunnen functioneren. Of de container nu op systeem A of B draait, de inhoudt blijft hetzelfde en alle afhankelijkheden worden meegeleverd. Voor een schematische weergave zie de onderstaande afbeelding.

Containers zijn efficiënter omdat zij het besturingssysteem en de resources met elkaar delen. Dit in tegenstelling tot VMs waarbij iedere VM een eigen besturingssysteem bevat. Een container is hiermee veel compacter dan bijvoorbeeld een VM. Containers kunnen vaak in seconden gestart worden, terwijl een VM meestal minuten nodig heeft om hetzelfde te doen. Dit scheelt aanzienlijk in de kosten omdat meerdere containers van dezelfde resources gebruik maken.

Bron

Het gebruik van containers biedt nog veel meer voordelen. Wil je hier meer over weten? Lees dan het artikel van Wesley Haakman die hier nog veel dieper op ingaat: “Write once, run anywhere”. Containers, de kortste klap voor ISVs naar een multi-platform, Hybride oplossing.

Microservices en Containers twee handen op 1 buik
Microservices en containers gaan buitengewoon goed met elkaar samen. In een Microservice architectuur wordt een applicatie opgesplitst in meerdere kleinere services. Elke service is verantwoordelijk een specifieke taak, niet meer. Microservices worden onafhankelijk van elkaar ontwikkeld, een groot voordeel is dat er voor elke service een unieke ontwikkelomgeving kan worden gekozen. Zo kan service A gebruik maken van .net-core, service B van php en service C van node.js.

Het zou zeer inefficiënt zijn om voor iedere service een aparte VM op te zetten, containers bieden hiervoor een uitstekende oplossing. Iedere service kan worden verpakt in een container en alle containers kunnen gebruikmaken van dezelfde hardware. Immers een container bevat niet alleen de applicatie, maar ook alle benodigde runtime en bibliotheken om te functioneren. Het toepassen van containers bij Microservices geeft je hiermee direct een kostenvoordeel ten opzichte van VMs

Kubernetes dé oplossing voor het beheer van containers
Voor het efficiënt beheren van grotere aantallen containers is Kubernetes dé oplossing. Met Kubernetes worden VM’s of servers (nodes) samengevoegd tot een cluster. Dit cluster kan centraal beheerd worden door een systeembeheerder of vanuit de ontwikkelteams zelf.

De belangrijkste voordelen van Kubernetes zijn:

  • Efficiëntie
    Veel problemen van het beheer van containers worden opgelost doordat Kubernetes containers samenvoegt in ‘Pods’. Aan Pods kun je eigenschappen toekennen zoals storage, networking en scheduling. Kubernetes kijkt vervolgens naar het beschikbare geheugen en processorgebruik van elke node en kiest voor jou de beste verdeling. Hiermee worden de nodes van het Kubernetes cluster optimaal gebruikt wat resulteert in directe kostenbesparing.

  • High-availability
    Kubernetes zorgt ervoor dat Pods altijd exact aanwezig zijn zoals deze zijn geconfigureerd. Dus ook bij onderhoud of een storing zal Kubernetes de Pods opnieuw aanmaken of verdelen. Hiermee zorgt Kubernetes er automatisch voor dat de site of applicatie altijd beschikbaar is.

  • Updaten zonder downtime
    Met rolling updates kun je altijd updaten zonder downtime. Rolling updates is een techniek om containers een voor een te vervangen door een nieuwere versie van Kubernetes. Hiermee is het in de meeste gevallen niet meer nodig om update ’s avonds of ’s nachts uit te voeren.

  • Centraal management
    Kubernetes heeft zijn eigen opslag voor configuratie, wachtwoorden en certificaten. Er is geen lokale configuratie op VM’s of servers nodig. Dit maakt het beheer van een Kubernetes cluster vele malen efficiënter als het beheer van vele VM’s.


Manage je Kubernetes met Azure Kubernetes Services
Het opzetten van een Kubernetes cluster is een serieuze klus en vereist vergaande kennis en ervaring van Linux, Docker en Kubernetes. Ook als het al lukt om een cluster op te zetten betekent dit nog steeds dat dit cluster moet worden onderhouden. Je moet goed plannen hoe je omgaat met storingen, updates en uitbreidingen. Ga je dit allemaal zelf doen kost dit veel tijd en is het vrij kostbaar. Dus hoe doe je dit dan wel?

Azure Kubernetes Services
Azure Kubernetes Service (AKS) is managed Kubernetes in Azure. Met AKS neemt Microsoft al het complexe beheer van het cluster van je over. Met een paar keer klikken of een paar regels code heb je al een AKS-cluster klaar voor productie gebruik.

Microsoft is een van de grootste organisaties die actief mee ontwikkeld aan Kubernetes. Wat resulteert in een perfecte ondersteuning van Kubernetes in Azure. Binnen twee weken na het uitkomen van een nieuwe versie is de versie beschikbaar in Azure. Het updaten van een cluster, normaal een erg ingewikkelde klus, is met AKS teruggebracht tot een enkele klik.

De redenen waarom je nog meer van AKS gaat houden:

  • Gratis! AKS is gratis, je betaald alleen voor de resources (VM’s, opslag en netwerk) die het cluster verbruikt. Er worden geen kosten berekend voor de AKS PaaS dienst zelf. Het complex beheer van het cluster wordt dus helemaal kosteloos door Microsoft uitgevoerd.

  • Elk Kubernetes cluster heeft een of meerdere master nodes nodig, deze nodes bevatten de configuratie en zijn verantwoordelijk voor het beheer van het cluster. De master nodes zijn bij AKS voor rekening van Microsoft, je betaalt alleen voor de VM’s waar je cluster uit bestaat.

  • AKS biedt uitstekende integratie met Azure DevOps voor het opzetten van een CD/CI pipelines. Met rolling updates kan Kubernetes stuk voor stuk de containers updaten zonder downtime. Dit is essentieel voor CI/CD pipelines waarbij op elk moment van de dag updates worden doorgezet naar productiesystemen.

  • Een AKS cluster wordt in Azure uitgerold op een Availibility Set. Hiermee zijn de servers van het cluster verdeeld over meerdere fysiek gescheiden hardware racks. Dit geeft jou de garantie dat zelf bij een storing van de onderliggende hardware het cluster nog steeds online blijft. Een AKS cluster is hiermee altijd beschikbaar en daarmee ook jouw applicaties op het cluster.

  • Horizontaal schaalbaar, het toevoegen, of verwijderen van nodes kan zonder downtime of zelfs volledig automatisch. Heb je extra power nodig, met een paar keer klikken worden nodes aan het cluster toegevoegd.

  • Als laatste voordeel van Azure Kubernetes Service is de uitgebreide integratie met andere services binnen Azure. Bijvoorbeeld de storage, netwerken, monitoring en beveiliging van Azure zijn naadloos geïntegreerd binnen Kubernetes.

In het vervolgartikel lees je wat je nodig hebt om een Kubernetes cluster op te zetten en hoe je dit stap voor stap in de praktijk brengt. Abonneer je hier op Intercept Insights

 

Gerelateerde berichten