container orchestration
Container orkestratie: het beheer van moderne applicaties op schaal
Containerisatie heeft de manier waarop software wordt ontwikkeld, getest en geïmplementeerd radicaal veranderd. In plaats van grote, complexe applicaties op één monolithische server te draaien, worden functies nu vaak opgesplitst in kleine, onafhankelijke eenheden: containers. Deze containers bevatten niet alleen de applicatie zelf, maar ook alle afhankelijkheden, bibliotheken en configuraties die nodig zijn om te draaien. Het resultaat is een lichtgewicht, draagbaar en reproduceerbaar pakket dat overal kan worden uitgevoerd — van een ontwikkelaarslaptop tot een productieserver in de cloud. Maar naarmate het aantal containers in een systeem groeit — van enkele tientallen naar honderden of duizenden — wordt het handmatig beheren ervan onhoudbaar. Daar komt container orkestratie om de hoek kijken.
Container orkestratie is het automatiseren van het beheer, de implementatie, schaalbaarheid, netwerken en beschikbaarheid van container-workloads. Het is een technisch proces dat ervoor zorgt dat containers efficiënt worden gestart, gestopt, geüpdatet, gedistribueerd en hersteld wanneer er iets fout gaat. Denk aan een systeem dat automatisch nieuwe containers opstart wanneer de belasting stijgt, of dat een container verplaatst naar een andere server als de huidige machine uitvalt. Orkestratie zorgt voor continuïteit, betrouwbaarheid en efficiëntie in complexe omgevingen waarin honderden of duizenden containers tegelijk actief kunnen zijn.
Het concept van container orkestratie is pas echt relevant geworden met de opkomst van Docker in 2013. Docker stelde ontwikkelaars in staat om applicaties eenvoudig in containers te verpakken, waardoor de drempel voor gebruik van containerisatie sterk daalde. De technologie kreeg snel veel aandacht en verspreidde zich breed over de IT-sector. Maar al snel werd duidelijk dat het hebben van een goede manier om containers te bouwen en draaien niet genoeg was — er was ook een oplossing nodig om ze op grote schaal te beheren. Dat is waar Google aan de slag ging.
In 2013 begonnen Google-ingenieurs Craig McLuckie, Joe Beda en Brendan Burns aan het idee voor een open-source systeem dat container-workloads op grote schaal zou kunnen beheren. Hun achtergrond bij Google gaf hen unieke inzichten: Google had al jarenlang een intern systeem, Borg, dat miljoenen containers en jobs beheerde over duizenden servers. Ze wilden die ervaring openstellen voor de bredere gemeenschap. Het resultaat was Kubernetes, een open-source container-orchestratiesysteem dat in juni 2014 voor het eerst openbaar werd aangekondigd. De eerste code-commit vond plaats op 6 juni 2014, wat officieel het begin markeerde van het project.
Kubernetes — vaak afgekort tot "k8s" — werd ontwikkeld door Google en is ontstaan uit de lessen die waren geleerd met Borg. Het systeem is ontworpen om automatisch de implementatie, schaalaanpassing en het beheer van container-workloads te regelen. Kubernetes biedt een platform dat applicaties kan draaien op clusters van machines, waarbij het systeem zelf beslist waar en wanneer containers worden gestart, hoe ze met elkaar communiceren en hoe ze worden bijgewerkt of vervangen. Het doel is om de complexiteit van het beheren van containers te verbergen achter een eenvoudige, declaratieve interface.
Op 21 juli 2015 werd Kubernetes uitgebracht als versie 1.0, een mijlpaal die aangaf dat het systeem klaar was voor productiegebruik. Deze release was het resultaat van samenwerking tussen meer dan 400 contributors, wat liet zien dat er al snel een grote gemeenschap rond het project was gegroeid. Kubernetes werd niet alleen gebruikt door Google, maar ook door talloze andere bedrijven en ontwikkelaars wereldwijd. Om de groei en onafhankelijkheid van het project te waarborgen, werd Kubernetes in 2015 gedoneerd aan de Cloud Native Computing Foundation (CNCF), een organisatie die zich richt op het bevorderen van cloud-native technologieën.
Op 10 maart 2016 trad Kubernetes officieel toe tot de CNCF, wat het project een formele thuis gaf en de ontwikkeling verder stimuleerde. Sindsdien is het aantal bijdragers aan het project sterk toegenomen: volgens het CNCF-rapport hebben meer dan 2.000 bedrijven code bijgedragen aan Kubernetes sinds het begin. Dat maakt het tot een van de meest actief onderhouden open-source projecten in de IT-wereld.
Kubernetes is tegenwoordig de standaard in container orkestratie. Het wordt gebruikt door bedrijven van elke omvang, van startups tot grote multinationals, en wordt ondersteund door alle grote cloudproviders: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP) en anderen. Het systeem is flexibel genoeg om te draaien op on-premise servers, in private clouds en in publieke clouds, waardoor organisaties hun workloads kunnen draaien waar het het beste uitkomt.
Maar Kubernetes is niet het enige spel in de stad. Een bekend alternatief is Docker Swarm, een orkestratie-oplossing die binnen het Docker-ecosysteem is geïntegreerd. Docker Swarm is eenvoudiger in gebruik en vereist minder configuratie dan Kubernetes, wat het aantrekkelijk maakt voor kleinere projecten of organisaties die snel willen starten. Toch heeft Kubernetes de markt grotendeels overgenomen vanwege zijn kracht, flexibiliteit en uitgebreide gemeenschap. Veel bedrijven die eerst met Docker Swarm begonnen, zijn later overgestapt op Kubernetes vanwege de betere schaalbaarheid en de bredere ondersteuning.
De kern van Kubernetes ligt in zijn architectuur. Het werkt met een master-worker model, waarbij een master-node (of control plane) de coördinatie verzorgt en worker-nodes de daadwerkelijke containers uitvoeren. De gebruiker definieert hoe de applicatie eruit moet zien — bijvoorbeeld: "ik wil drie instanties van deze webserver draaien" — en Kubernetes zorgt ervoor dat die toestand wordt bereikt en gehandhaafd. Als een container crasht, start Kubernetes automatisch een nieuwe. Als de belasting stijgt, kan het automatisch meer instanties opstarten (horizontale schaalvergroting). Als een server uitvalt, worden de containers verplaatst naar andere nodes.
Kubernetes biedt ook geavanceerde functies zoals service discovery, load balancing, automatische rollouts en rollbacks, geheime beheer (secrets), en monitoring. Het maakt gebruik van declaratieve configuratiebestanden, meestal in YAML-formaat, waarmee gebruikers de gewenste toestand van hun systeem beschrijven. Kubernetes vergelijkt deze gewenste toestand met de huidige toestand en neemt actie om het verschil te verkleinen. Dit concept, bekend als "desired state management", is een van de krachtigste aspecten van het platform.
Ondanks zijn voordelen is Kubernetes complex. De leercurve is steil, en het opzetten en onderhouden van een Kubernetes-cluster vereist specialistische kennis. Veel organisaties gebruiken daarom beheerde Kubernetes-diensten zoals Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) of Azure Kubernetes Service (AKS), waarbij de cloudprovider het onderliggende beheer op zich neemt.
Samenvattend is container orkestratie een essentiële technologie geworden in de moderne IT. Kubernetes, ontwikkeld door Google-ingenieurs Craig McLuckie, Joe Beda en Brendan Burns, is uitgegroeid tot de dominante speler op dit vlak. Vanaf de eerste code-commit in juni 2014 tot de 1.0-release in juli 2015 en de overdracht aan de CNCF in 2015, heeft het project een snelle en succesvolle groei doorgemaakt. Vandaag de dag automatiseert Kubernetes wereldwijd het beheer van miljoenen containers, en het blijft een levendig en actief open-source project met bijdragen van meer dan 2.000 bedrijven. Het is een duidelijk voorbeeld van hoe open-source innovatie, samenwerking en gemeenschap kunnen leiden tot een technologische standaard die de hele industrie beïnvloedt.