Wat is Kubernetes (K8s) en hoe werkt het?
Auteur: Redactie Domeny.ForSale Gepubliceerd
In het kort: Kubernetes, afgekort K8s, is een open platform voor het uitvoeren en beheren van applicaties in containers. Het zorgt ervoor dat het opgegeven aantal kopieën draait, vervangt niet-beschikbare instanties en maakt het eenvoudiger om nieuwe versies uit te rollen. Het is nuttig voor uitgebreide systemen, maar voor een eenvoudige website of kleine applicatie kan het beheer ingewikkelder zijn dan de hosting zelf.
Van container naar applicatiebeheer
Een container is een geïsoleerde omgeving waarin een applicatieproces draait. Hij wordt aangemaakt op basis van een containerimage: een pakket met de code, benodigde bibliotheken en opstartinstellingen. Daardoor kun je dezelfde applicatieversie in verschillende compatibele omgevingen draaien zonder alle afhankelijkheden handmatig te installeren.
Een enkele container is relatief eenvoudig te starten. Het wordt lastiger wanneer je veel applicaties moet beheren, ze over meerdere servers moet verdelen, ze zonder lange onderbrekingen moet bijwerken en op storingen moet reageren. Kubernetes automatiseert een deel van die taken. Deze vorm van beheer heet containerorkestratie.
K8s is een afkorting van Kubernetes: tussen de letters ‘K’ en ‘s’ staan acht letters. Het is geen afzonderlijk product of andere versie van het platform.
Hoe Kubernetes werkt: clusters, nodes en pods
Een cluster is een omgeving voor Kubernetes die bestaat uit een beheerlaag en nodes waarop applicaties draaien. Een node is een fysieke of virtuele machine. In een kleine testomgeving kunnen alle onderdelen op één computer draaien.
De beheerlaag, het control plane, bewaart de configuratie en coördineert de werking van het cluster. Deze laag bepaalt onder meer waar een applicatie wordt gestart. De software op de nodes voert die opdrachten uit en geeft informatie door over de status van de draaiende taken.
Kubernetes werkt op basis van een gewenste toestand. In plaats van elke kopie van de applicatie handmatig te starten, geef je bijvoorbeeld aan: ‘Er moeten drie kopieën van deze versie draaien.’ Het systeem vergelijkt die declaratie voortdurend met de werkelijke toestand en probeert verschillen op te heffen.
Om de basis te begrijpen, heb je genoeg aan vier begrippen:
- Pod — de kleinste eenheid die Kubernetes uitvoert. Een pod bevat één of meer nauw samenwerkende containers die het netwerk delen en gedeelde volumes kunnen gebruiken: opslaglocaties voor gegevens.
- Deployment — een object dat onder meer de applicatieversie en het gewenste aantal pods beschrijft. Het maakt het eenvoudiger om pods tijdens updates te vervangen.
- Service — biedt een stabiel netwerkadres voor toegang tot een groep pods, ook wanneer afzonderlijke pods worden vervangen.
- Namespace — een logische ruimte om resources binnen het cluster te ordenen, bijvoorbeeld per team of omgeving. Op zichzelf biedt een namespace geen volledige beveiligingsisolatie.
De configuratie wordt vaak vastgelegd in YAML-bestanden, een leesbaar formaat voor tekstuele gegevens. Om met het cluster te werken, kun je onder meer het opdrachtregelprogramma kubectl gebruiken.
Wat er gebeurt bij storingen en updates
Stel je een webwinkel voor waarvan het onderdeel dat aanvragen afhandelt in drie pods op meerdere nodes draait. Een Deployment bepaalt het aantal kopieën en een Service stuurt het verkeer naar beschikbare pods. Als een pod uitvalt, probeert Kubernetes een vervangende pod te starten.
Dat betekent niet dat herstel onmiddellijk of onder alle omstandigheden lukt. Het cluster moet vrije resources, toegang tot de applicatieimage en een werkende infrastructuur hebben. Als een fout in de applicatie bij elke start een crash veroorzaakt, neemt het opnieuw starten van de pod de oorzaak niet weg.
Tijdens een update kan Kubernetes oude pods geleidelijk door nieuwe vervangen. Gereedheidscontroles, oftewel ingestelde controles die nagaan of de applicatie aanvragen kan afhandelen, helpen voorkomen dat verkeer naar een nog opstartende kopie wordt gestuurd. Een uitrol zonder onderbreking vereist echter een geschikte configuratie en een passend applicatieontwerp — het platform garandeert dit niet automatisch.
Voor schalen geldt iets vergelijkbaars. Met Kubernetes kun je het aantal kopieën wijzigen. Als je automatische schaling configureert, kan het platform dat doen op basis van meetwaarden zoals het processorgebruik. Meer pods lossen echter geen overbelasting van een database of een ander gedeeld knelpunt op.
Wat Kubernetes niet vervangt
Kubernetes maakt geen applicatieimages en vervangt niet het hele proces van het testen en publiceren van code. Het is ook geen synoniem voor Docker. De tools van Docker helpen onder meer bij het bouwen en lokaal uitvoeren van containers. Kubernetes beheert daarentegen hun werking in een cluster en gebruikt daarvoor een geschikte runtime, bijvoorbeeld containerd.
Het platform biedt op zichzelf geen volledige monitoring, back-ups of applicatiebeveiliging. Je moet toegangsrechten, updates, het verzamelen van logs en de bescherming van authenticatiegegevens plannen. Toegang vanaf internet vereist ook een geschikte netwerkconfiguratie en meestal aanvullende componenten of diensten van de aanbieder.
Gegevens verdienen bijzondere aandacht. Een pod kan verdwijnen en opnieuw worden aangemaakt. Bestanden die bewaard moeten blijven, mogen daarom niet uitsluitend in de beschrijfbare laag van de container staan. Kubernetes ondersteunt persistente volumes, maar het gebruik daarvan vervangt geen back-up of geteste herstelprocedure.
Wanneer K8s zinvol is
Kubernetes is het overwegen waard als je veel diensten beheert, ze vaak uitrolt, ze onafhankelijk van elkaar moet kunnen schalen en een team hebt dat het platform kan beheren. Een gezamenlijke aanpak voor configuratie en uitrol kan dan het aantal handmatige handelingen verminderen.
Voor een blog, bedrijfswebsite of één kleine applicatie betekenen eenvoudiger hosting, een virtuele server of een beheerd applicatieplatform vaak minder beheertaken. Dat is een praktische afweging, geen technische beperking: je kunt een kleine applicatie in Kubernetes draaien, maar de voordelen wegen mogelijk niet op tegen de benodigde inspanning.
Bij beheerde Kubernetes neemt de aanbieder een deel van de taken over, maar welke taken dat zijn, hangt af van de dienst. Controleer vóór je keuze in de officiële documentatie en prijslijst wie verantwoordelijk is voor updates, welke beschikbaarheid de beheerlaag biedt en welke kosten gelden voor servers, schijven, het netwerk en aanvullende componenten.
Als je K8s net leert kennen, start dan een lokaal testcluster, bijvoorbeeld met kind of minikube. Rol een eenvoudige applicatie met twee kopieën uit en verwijder één pod. Door te observeren hoe het systeem die vervangt, leer je het basismechanisme begrijpen zonder een productie-infrastructuur op te zetten.
Zie ook: Wat is 2FA?
