Home » Begrippen » Wat is Kubernetes?

Wat is Kubernetes?

Kubernetes is een open-source platform voor het automatisch beheren, schalen en uitrollen van gecontaineriseerde applicaties. Oorspronkelijk ontwikkeld door Google en in 2014 vrijgegeven aan de open-source gemeenschap, is het vandaag de dag de industriestandaard voor containerorkestratie. Je gebruikt Kubernetes wanneer je meerdere containers op één of meerdere servers wilt draaien zonder dat je dit handmatig hoeft te beheren. Denk aan een webshop die tijdens een uitverkoop automatisch extra servers opstart, of een microservices-architectuur waarbij tientallen kleine diensten nauw samenwerken. Kubernetes maakt dit alles betrouwbaar, schaalbaar en reproduceerbaar.

De basisconcepten van Kubernetes

Om Kubernetes goed te begrijpen, moet je vertrouwd raken met een aantal kernconcepten. Deze bouwstenen bepalen hoe Kubernetes applicaties organiseert en beheert.

Containers en pods

Een container is een lichtgewicht, zelfstandige eenheid die jouw applicatie en al haar afhankelijkheden bevat. Docker is de bekendste manier om containers te bouwen. In Kubernetes worden containers gegroepeerd in zogeheten pods. Een pod is de kleinste inzetbare eenheid in Kubernetes en bevat doorgaans één container, soms twee of drie die nauw samenwerken.

Nodes en clusters

Een node is een fysieke of virtuele machine waarop pods worden uitgevoerd. Een cluster is een groep nodes die samen worden beheerd door Kubernetes. Elk cluster heeft een control plane, de besturingslaag die beslissingen neemt over waar en wanneer pods worden gestart of gestopt. De overige nodes heten worker nodes en voeren de eigenlijke werklast uit.

Deployments en services

Een deployment beschrijft de gewenste staat van jouw applicatie: hoeveel replica’s van een pod er moeten draaien, welke containerafbeelding wordt gebruikt en hoe updates worden uitgerold. Kubernetes zorgt er continu voor dat de werkelijke staat overeenkomt met de gewenste staat. Een service is een stabiel netwerkadres dat verkeer naar de juiste pods routeert, ook als die pods worden herstart of vervangen.

Waarom Kubernetes gebruiken?

Kubernetes lost een fundamenteel probleem op dat ontstaat wanneer applicaties groeien: het handmatig beheren van servers en processen wordt al snel onhoudbaar. Met Kubernetes definieer je de gewenste staat van jouw systeem en laat je het platform de details afhandelen.

  • Automatische schaling: Kubernetes kan automatisch meer pods starten wanneer de belasting toeneemt en ze afschalen als het rustiger wordt.
  • Zelfherstellend vermogen: als een pod crasht, start Kubernetes automatisch een nieuwe op. Falende nodes worden herkend en de werklast wordt herverdeeld.
  • Rollende updates: je kunt een nieuwe versie van je applicatie uitrollen zonder downtime, waarbij Kubernetes geleidelijk oude pods vervangt door nieuwe.
  • Portabiliteit: omdat Kubernetes op elke cloud of on-premises infrastructuur draait, vermijd je vendor lock-in.
  • Declaratief beheer: je beschrijft in YAML-bestanden wat je wilt, niet hoe Kubernetes het moet doen.

Hoe Kubernetes werkt in de praktijk

Stel je voor dat je een webapplicatie hebt die bestaat uit een front-end, een back-end en een database. Elk onderdeel draait in zijn eigen container. Je definieert voor elk onderdeel een deployment en een service in YAML-configuratiebestanden en stuurt deze naar Kubernetes. Het platform plant vervolgens de pods op beschikbare nodes, zorgt dat ze met elkaar kunnen communiceren en bewaakt continu of alles naar wens draait.

YAML-configuratie als code

Een van de krachtigste aspecten van Kubernetes is dat de volledige infrastructuurconfiguratie in tekstbestanden staat. Deze bestanden sla je op in een versiebeheersysteem zoals Git, wat de zogenoemde GitOps-aanpak mogelijk maakt. Elke wijziging aan de infrastructuur is daarmee traceerbaar, herhaalbaar en terug te draaien.

Ingress en load balancing

Verkeer van buiten het cluster wordt afgehandeld door een ingress controller. Deze verdeelt inkomende HTTP-verzoeken over de juiste services, kan SSL-certificaten afhandelen en ondersteunt hostgebaseerde routering. Hierdoor kun je meerdere applicaties op één Kubernetes-cluster draaien, elk op hun eigen domeinnaam.

ConfigMaps en Secrets

Omgevingsvariabelen en gevoelige informatie, zoals databasewachtwoorden, beheer je in Kubernetes via ConfigMaps en Secrets. ConfigMaps bevatten niet-gevoelige configuratiedata, terwijl Secrets versleuteld worden opgeslagen. Zo houd je gevoelige informatie uit je containerafbeeldingen en configuratiebestanden.

Kubernetes en cloudproviders

De grote cloudproviders bieden beheerde Kubernetes-diensten aan, waardoor je niet zelf een cluster hoeft op te zetten en te onderhouden. Amazon Web Services heeft Amazon EKS, Google Cloud biedt Google Kubernetes Engine (GKE) aan en Microsoft Azure heeft AKS. Met een beheerde dienst neemt de cloudprovider de verantwoordelijkheid voor de control plane over, zodat jij je kunt richten op jouw applicaties.

Voor kleinere projecten of lokale ontwikkeling zijn er lichtgewichte alternatieven zoals Minikube, k3s en Kind. Deze draaien een volledig Kubernetes-cluster op je eigen laptop, wat ideaal is om te leren en te experimenteren.

Conclusie

Kubernetes is uitgegroeid tot de standaard voor het beheren van gecontaineriseerde applicaties op schaal. Het platform neemt de complexiteit weg van het handmatig beheren van servers, zorgt voor automatische schaling, zelfherstel en naadloze updates. Of je nu een kleine startup bent of een groot enterprise, Kubernetes biedt de tools om applicaties betrouwbaar en efficiënt te draaien. De leercurve is steil, maar de investering betaalt zich terug in minder operationele overhead en een robuustere infrastructuur. Wil je aan de slag? Begin dan met de officiële Kubernetes-tutorial of zet een lokaal cluster op met Minikube om de concepten hands-on te verkennen.

Veelgestelde vragen

  1. Wat is het verschil tussen Docker en Kubernetes?

    Docker is een platform voor het maken en draaien van containers. Kubernetes is een orkestratieplatform dat meerdere containers over meerdere machines beheert. Je gebruikt Docker (of een ander containerplatform) om containers te bouwen en Kubernetes om ze op schaal te beheren.

  2. Heb ik Kubernetes nodig voor een kleine applicatie?

    Voor kleine of eenvoudige applicaties is Kubernetes waarschijnlijk te zwaar. Docker Compose of een eenvoudige cloud-hostingoplossing volstaat dan. Kubernetes wordt pas echt waardevol wanneer je meerdere services hebt, hoge beschikbaarheid nodig hebt of snel wilt kunnen schalen.

  3. Wat zijn de alternatieven voor Kubernetes?

    Er zijn verschillende alternatieven, afhankelijk van jouw behoeften. Docker Swarm is eenvoudiger maar minder uitgebreid. AWS ECS is een beheerde dienst die minder configuratie vereist. Nomad van HashiCorp is een lichtgewichtiger orkestrator. Voor de meeste productietoepassingen is Kubernetes echter de meest volwassen en breed ondersteunde keuze.

  4. Is Kubernetes moeilijk te leren?

    Kubernetes heeft een steile leercurve door de hoeveelheid concepten en configuratiemogelijkheden. Met de juiste leerbronnen, zoals de officiële documentatie en hands-on labs, kun je de basisprincipes in een paar weken begrijpen. Praktische ervaring, bij voorkeur met een beheerde dienst zoals GKE of EKS, versnelt het leerproces aanzienlijk.

  5. Hoe verhoudt Kubernetes zich tot serverless computing?

    Serverless computing, zoals AWS Lambda, abstraheert de infrastructuur volledig weg: je deployt alleen functies, geen containers of servers. Kubernetes geeft je meer controle en is beter geschikt voor langdurige processen en complexe applicaties. Veel organisaties gebruiken beide naast elkaar: Kubernetes voor de kernservices en serverless voor gebeurtenisgestuurde taken.

Al onze begrippen

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0-9