Wat is Kubernetes

Uitgelichte afbeelding: Wat is Kubernetes

Containers draaien is eenvoudig. Tientallen of zelfs duizenden containers beheren op meerdere servers is een ander verhaal. Kubernetes lost dat probleem op, maar het is geen tool die je zomaar even installeert. Begrijp je eerst wat Kubernetes doet en waarom het zo gebouwd is, dan kun je beoordelen of het bij jouw situatie past. Want eerlijk gezegd: Kubernetes is niet voor iedereen de juiste keuze, en dat zeggen maar weinig artikelen hardop.

Wat is Kubernetes en waar komt het vandaan

Wat is Kubernetes precies? Kort gezegd: een open source platform waarmee je grote groepen containers automatisch kunt uitrollen, schalen en beheren. Google ontwikkelde het systeem intern onder de naam "Borg" en gaf het in 2014 vrij als Kubernetes open source project. De Cloud Native Computing Foundation beheert het nu als onderdeel van het cloud native ecosysteem.

Wat is Kubernetes precies? Kort gezegd: een open source platform waarmee je grote groepen containers automatisch kunt uitrollen, schalen en beheren. Google ontwikkelde het systeem intern onder de naam "Borg" en gaf het in 2014 vrij als Kubernetes open source project. De Cloud Native Computing Foundation beheert het nu als onderdeel van het cloud native ecosysteem.

De naam komt van het Griekse woord voor stuurman. Dat is een mooie metafoor. Kubernetes stuurt jouw containers in de goede richting, ook als er iets misgaat. Het systeem houdt voortdurend in de gaten of de werkelijkheid overeenkomt met de gewenste status die jij hebt opgegeven. Klopt er iets niet? Dan grijpt Kubernetes in.

Kubernetes is een Kubernetes open source project dat nu door duizenden bedrijven wereldwijd wordt ingezet. Van kleine startups tot grote banken. Dat zegt iets over de volwassenheid van het platform, maar ook over hoe breed de toepassingen zijn.

Hoe Kubernetes werkt: de kernconcepten uitgelegd

Zo ziet een typische Kubernetes-configuratie eruit in de praktijk Kubernetes werkt met een aantal begrippen die je moet kennen voordat je er iets mee kunt. Geen zorgen, ze zijn minder ingewikkeld dan ze klinken. Cluster, nodes en pods Een Kubernetes cluster is een groep servers, ook wel nodes genoemd, die samen als een geheel werken.

Codevoorbeeld: Hoe Kubernetes werkt: de kernconcepten uitgelegd
Zo ziet een typische Kubernetes-configuratie eruit in de praktijk

Kubernetes werkt met een aantal begrippen die je moet kennen voordat je er iets mee kunt. Geen zorgen, ze zijn minder ingewikkeld dan ze klinken.

Cluster, nodes en pods

Een Kubernetes cluster is een groep servers, ook wel nodes genoemd, die samen als een geheel werken. Die servers kunnen fysieke machines zijn, virtual machines of cloudinstances. Kubernetes ziet ze als een grote pool van beschikbare resources en verdeelt het werk slim over die pool.

De operationele basiseenheid in Kubernetes is de pod. Een pod is een of meer containers die samen draaien en dezelfde netwerkomgeving delen. Elke pod heeft een eigen IP-adres binnen het cluster. Kubernetes beheert die pods en zorgt dat ze op de juiste node terechtkomen.

Zo werkt Kubernetes in de praktijk: jij beschrijft wat je wilt in een YAML-bestand, en Kubernetes zorgt dat het er ook echt zo uitziet. Dat noemen we de gewenste status. Het systeem vergelijkt die gewenste status voortdurend met de werkelijke toestand, de gewenste toestand die jij hebt ingesteld is de norm.

De control plane

De control plane is het brein van het Kubernetes cluster. Het bestaat uit meerdere onderdelen die samen beslissen waar nieuwe pods terechtkomen, hoe load balancing werkt en wat er moet gebeuren als een node uitvalt. Je hoeft als gebruiker niet elke beslissing zelf te nemen. Kubernetes doet dat op basis van de regels die jij hebt opgegeven.

YAML
# Eenvoudig Deployment-manifest voor een webapplicatie
apiVersion: apps/v1
kind: Deployment
metadata: name: onze-webapplicatie
spec: replicas: 3 selector: matchLabels: app: onze-webapplicatie template: metadata: labels: app: onze-webapplicatie spec: containers: - name: webcontainer image: onze-image:1.0 ports: - containerPort: 80

In dit voorbeeld vraag je Kubernetes om drie kopieën van jouw container te draaien. Gaat er een uitvallen? Dan start Kubernetes nieuwe containers op om het aantal van drie te halen. Automatisch, zonder dat jij er naar hoeft te kijken.

Services en load balancing

Pods komen en gaan. Dat is precies de kracht van Kubernetes. Maar hoe weet verkeer waar het naartoe moet? Dat regelt een Service. Een Service is een stabiel eindpunt dat verkeer doorstuurt naar de juiste pods. Load balancing zit er standaard in: Kubernetes verdeelt inkomende verzoeken automatisch over alle beschikbare pods. Je applicatie blijft daardoor bereikbaar, ook als er pods worden vervangen.

Candy Lippets, Office- en contentmanager

Als je containers in productie draait, wil je namespaces en resource limits vanaf dag één goed inrichten, want achteraf opschonen kost veel meer tijd dan vooraf plannen. Wij zien regelmatig dat clusters zonder duidelijke structuur uitgroeien tot een wirwar van workloads die niemand meer durft aan te raken.

Candy LippetsOffice- en contentmanager

Kubernetes versus alternatieven: wanneer kies je waarvoor

Kubernetes vergeleken met andere tools zodat je bewust kiest Kubernetes is niet het enige systeem voor containerbeheer. Het is wel het meest bekende, maar dat betekent niet dat het altijd de beste keuze is. Laten we eerlijk zijn over de alternatieven. Docker Compose Docker Compose is een makkelijker systeem voor kleine projecten.

Vergelijking: Kubernetes versus alternatieven: wanneer kies je waarvoor
Kubernetes vergeleken met andere tools zodat je bewust kiest

Kubernetes is niet het enige systeem voor containerbeheer. Het is wel het meest bekende, maar dat betekent niet dat het altijd de beste keuze is. Laten we eerlijk zijn over de alternatieven.

Docker Compose

Docker Compose is een makkelijker systeem voor kleine projecten. Je definieert meerdere containers in een enkel bestand en start ze allemaal tegelijk op. Dat werkt prima op lokale computers of voor eenvoudige applicaties op een enkele fysieke server. Zodra je naar meerdere servers wilt schalen, houdt Docker Compose op te werken. Kubernetes is dan de logische stap.

Docker Swarm

Docker Swarm is de ingebouwde oplossing van Docker voor clustering. Het is eenvoudiger dan Kubernetes en werkt goed voor kleinere teams. Maar het heeft minder mogelijkheden op het gebied van schaalbaarheid en automatisering. Grote applicaties met complexe toepassingen groeien er snel overheen.

Managed diensten zonder Kubernetes

Sommige cloud native applicaties draaien prima op een platform als AWS App Runner of Google Cloud Run. Die diensten nemen het containerbeheer volledig over. Je betaalt per gebruik en hoeft niets te weten van clusters of nodes. Voor eenvoudige workloads is dat vaak goedkoper en sneller. Kubernetes is dan overkill.

Het eerlijke antwoord op "wanneer kies je voor Kubernetes" is dus: als je applicaties op grote schaal wilt draaien, over meerdere servers, met hoge beschikbaarheid en automatisch herstel. Niet eerder.

De voordelen die Kubernetes onderscheidt van handmatig containerbeheer

Dit zijn de concrete voordelen ten opzichte van handmatig containers beheren Kubernetes biedt een aantal eigenschappen die je met handmatig beheer niet of nauwelijks kunt evenaren. Hier zijn de meest concrete. Automatisch herstel Defecte containers worden automatisch opnieuw gestart. Kubernetes houdt bij welke pods gezond zijn en welke niet. Een specifieke pod die crasht?

Codevoorbeeld: De voordelen die Kubernetes onderscheidt van handmatig containerbeheer
Dit zijn de concrete voordelen ten opzichte van handmatig containers beheren

Kubernetes biedt een aantal eigenschappen die je met handmatig beheer niet of nauwelijks kunt evenaren. Hier zijn de meest concrete.

Automatisch herstel

Defecte containers worden automatisch opnieuw gestart. Kubernetes houdt bij welke pods gezond zijn en welke niet. Een specifieke pod die crasht? Kubernetes vervangt hem zonder dat jij wakker gebeld wordt. Dat is hoge beschikbaarheid in de praktijk.

Schalen op aanvraag

Kubernetes kun je zo instellen dat het automatisch meer pods opstart als het druk wordt, en ze weer afschaalt als het rustiger is. Dat heet horizontal pod autoscaling. Je betaalt alleen voor wat je gebruikt en jouw applicatie blijft snel, ook bij pieken.

Efficiënt gebruik van resources

Kubernetes kijkt naar de beschikbare resources op elke node en plaatst nieuwe pods daar waar ruimte is. Dat zorgt voor efficiënt gebruik van jouw infrastructuur. Je hoeft niet per applicatie een aparte fysieke server of virtuele machine te reserveren.

Rollouts zonder downtime

Wil je een nieuwe versie uitrollen? Kubernetes doet dat stap voor stap. Eerst nieuwe containers opstarten, dan de oude afschakelen. Gaat er iets mis? Dan rolt Kubernetes automatisch terug naar de vorige versie. Zo blijft jouw applicatie beschikbaar tijdens updates.

CI/CD en continue integratie

Kubernetes past goed bij een CI/CD-aanpak. CI/CD staat voor continue integratie en continue implementatie: code wordt automatisch getest en uitgerold. Kubernetes is de plek waar die uitgerolde code draait. Combineer je Kubernetes met een CI/CD-pipeline, dan kun je meerdere keren per dag veilig deployen. Dat is een andere mindset dan handmatig servers bijwerken, maar het levert veel op.

BASH
# Kubectl-commando om een rollout te controleren
kubectl rollout status deployment/onze-webapplicatie # Terugdraaien naar de vorige versie
kubectl rollout undo deployment/onze-webapplicatie

De nadelen en valkuilen die je van tevoren moet kennen

Deze valkuilen wil je kennen voordat je met Kubernetes begint Kubernetes is krachtig, maar het heeft een prijs. Niet alleen in geld, maar ook in complexiteit. Hier zijn de valkuilen die je het vaakst tegenkomt. De leercurve is steil Kubernetes uitgelegd in een paar alinea's is mogelijk, maar het echt begrijpen kost tijd.

Schema: De nadelen en valkuilen die je van tevoren moet kennen
Deze valkuilen wil je kennen voordat je met Kubernetes begint

Kubernetes is krachtig, maar dat kracht heeft zijn prijs. Niet alleen wat geld betreft, maar ook in complexiteit. Dit zijn de valkuilen waar je het vaakst tegenaan loopt.

De leercurve is steil

Kubernetes uitgelegd in een paar alinea's is mogelijk, maar het echt begrijpen kost tijd. Je hebt te maken met pods, nodes, services, ingress, namespaces, configmaps, secrets en nog veel meer. Er bestaat zelfs een certificering, de certified Kubernetes application developer, voor mensen die willen bewijzen dat ze het platform beheersen. Dat zegt genoeg over de diepgang.

Overhead voor kleine projecten

Een Kubernetes omgeving opzetten kost tijd en geld. Voor een eenvoudige website of een kleine applicatie is dat zelden de moeite waard. Je betaalt voor de onderliggende infrastructuur van het cluster, ook als er weinig verkeer is. Bij kleine projecten is een gewone VPS of managed hosting een betere keuze.

Operationele verantwoordelijkheid

Als je zelf een Kubernetes omgeving beheert, ben jij verantwoordelijk voor updates, beveiliging en monitoring. Dat vraagt kennis en aandacht. Veel teams onderschatten dit. Een Kubernetes cluster dat niet goed onderhouden wordt, is een risico.

Netwerken en opslag zijn complex

Kubernetes regelt netwerken en opslag op een eigen manier. Verschillende containers die data willen delen, persistent storage nodig hebben of met elkaar moeten communiceren, vereisen extra configuratie. Dat is niet onmogelijk, maar het vraagt wel kennis van de Kubernetes omgeving die je gebruikt.

Voor wie is Kubernetes geschikt en voor wie niet

Herken jij je in deze situaties dan is Kubernetes waarschijnlijk geschikt Kubernetes is interessant als je een of meer van de volgende situaties herkent. Je draait complexe toepassingen die bestaan uit meerdere microservices. Elke microservice is een los stukje software met eigen bijbehorende afhankelijkheden. Kubernetes houdt die services bij elkaar en zorgt dat ze met elkaar kunnen praten.

Illustratie: Voor wie is Kubernetes geschikt en voor wie niet
Herken jij je in deze situaties dan is Kubernetes waarschijnlijk geschikt

Kubernetes is interessant als je een of meer van de volgende situaties herkent.

Je draait complexe toepassingen die bestaan uit meerdere microservices. Elke microservice is een los stukje software met eigen bijbehorende afhankelijkheden. Kubernetes houdt die services bij elkaar en zorgt dat ze met elkaar kunnen praten. Dat is precies waar Kubernetes voor gemaakt is.

Je wilt hoge beschikbaarheid zonder handmatig in te grijpen. Kubernetes beheert defecte containers en start nieuwe pods op zonder dat jij erbij hoeft te zijn. Voor productie-omgevingen waar downtime niet acceptabel is, is dat een groot voordeel.

Je werkt met een team van ontwikkelaars dat regelmatig nieuwe versies uitrolt. CI/CD en Kubernetes zijn een logische combinatie. Continue integratie zorgt dat code getest wordt, Kubernetes zorgt dat het veilig en snel uitgerold wordt.

Je hebt te maken met wisselend verkeer en wilt automatisch schalen. Kubernetes kun je zo instellen dat het het aantal containers aanpast op basis van het verkeer. Dat is efficiënter dan een vaste server die altijd op volle capaciteit draait.

Kubernetes is minder geschikt voor een eenvoudige website of webshop. Heeft je team weinig ervaring met containers, of wil je geen managed Kubernetes afnemen vanwege het budget? Dan betaal je meer dan je terugkrijgt.

Zo begin je met Kubernetes zonder direct te verdwalen

Wil je Kubernetes leren kennen? Begin dan niet meteen met een productie-cluster. Hier is een eerlijke aanpak die werkt. Stap 1: Leer eerst Docker Kubernetes beheert containers, maar het maakt die containers niet zelf. Docker doet dat. Begrijp je hoe containers werken, hoe images gebouwd worden en hoe je bijbehorende afhankelijkheden meepakt, dan is de stap naar Kubernetes een stuk.

Wil je Kubernetes leren kennen? Begin dan niet meteen met een productie-cluster. Hier is een eerlijke aanpak die werkt.

Stap 1: Leer eerst Docker

Kubernetes beheert containers, maar het maakt die containers niet zelf. Docker doet dat. Begrijp je hoe containers werken, hoe images gebouwd worden en hoe je bijbehorende afhankelijkheden meepakt, dan is de stap naar Kubernetes een stuk kleiner.

Stap 2: Experimenteer lokaal

Met Minikube of Kind draai je een Kubernetes cluster op lokale computers. Zo kun je oefenen zonder kosten te maken. Je leert hoe pods werken, hoe je services aanmaakt en hoe load balancing in de praktijk werkt.

Stap 3: Kies managed Kubernetes voor productie

Managed Kubernetes is een dienst waarbij de cloud native computing foundation-compatibele Kubernetes omgeving voor jou wordt opgezet en onderhouden. Jij levert de applicaties, de provider regelt de onderliggende infrastructuur. Dat scheelt veel operationele rompslomp. Grote aanbieders als Google, Amazon en Microsoft bieden managed Kubernetes aan. Maar ook Nederlandse providers bieden dit steeds vaker aan.

Het verschil tussen on premise Kubernetes en managed Kubernetes is aanzienlijk. Bij on premise draai je alles zelf: de fysieke server of virtual machines, het netwerk, de updates. Managed Kubernetes neemt dat werk uit handen. Voor de meeste teams is het dan ook de verstandigste keuze om mee te beginnen.

Stap 4: Bouw een CI/CD-pipeline

Zodra je Kubernetes cluster staat, wil je code automatisch kunnen uitrollen. Een CI/CD-pipeline doet dat voor je. CI/CD zorgt voor continue integratie en continue implementatie: code die getest is, gaat automatisch naar productie. Tools als GitLab CI, GitHub Actions of Jenkins werken goed samen met Kubernetes.

Stap 5: Monitor je cluster

Een Kubernetes cluster dat je niet monitort, is een cluster dat je verrast. Gebruik tools als Prometheus en Grafana om inzicht te krijgen in het aantal containers, de beschikbare resources en de gezondheid van je nodes. Zo weet je wat er speelt voordat het een probleem wordt.

Kubernetes en hosting bij Hostingway

Wij zijn actief sinds 2001 en zien hoe de vraag naar containerinfrastructuur in Nederland groeit. Steeds meer Nederlandse bedrijven willen cloud native applicaties draaien, maar lopen aan tegen de complexiteit van Kubernetes. Dat is begrijpelijk. Onze senior engineers in Nederland kennen de praktijk.

Wij zijn actief sinds 2001 en zien hoe de vraag naar containerinfrastructuur in Nederland groeit. Steeds meer Nederlandse bedrijven willen cloud native applicaties draaien, maar lopen aan tegen de complexiteit van Kubernetes. Dat is begrijpelijk.

Onze senior engineers in Nederland kennen de praktijk. Ze weten wat er misgaat als een Kubernetes omgeving niet goed is opgezet, en ze weten hoe je dat voorkomt. Dat is kennis die je opbouwt in meer dan twintig jaar hosting, niet in een cursus.

Heb je vragen over managed Kubernetes, over hoe je jouw applicaties het beste kunt inrichten, of wil je weten of Kubernetes bij jouw situatie past? Neem dan contact met ons op. Wij denken graag mee, zonder verkooppraatje. Want soms is een goed ingerichte VPS met NVMe-opslag en LiteSpeed precies wat je nodig hebt. En is Kubernetes voor jouw situatie te zwaar.

De AVG speelt ook een rol als je nadenkt over waar je jouw Kubernetes cluster draait. Data van Nederlandse gebruikers wil je bij voorkeur in Nederland houden. Wij werken met een eigen netwerk in Nederland, zodat je weet waar jouw data staat.

Wil je dieper de techniek in? Bekijk de officiële Kubernetes-documentatie voor de actuele, technische details.

Wil je dieper de techniek in? Bekijk de Docker-documentatie voor de actuele, technische details.

Kubernetes vs Docker Swarm

Kenmerk Kubernetes Docker Swarm
Leercurve Steil, complexe configuratie Laag, eenvoudig te starten
Schaalbaarheid Zeer groot, enterprise-niveau Beperkt, kleinere clusters
Automatisch herstel Ingebouwd, uitgebreid Basisondersteuning aanwezig
Community & ecosysteem Groot, veel tooling beschikbaar Kleiner, minder extensies
Installatie Complex, meerdere componenten Eenvoudig via Docker CLI

Veelgestelde vragen over Kubernetes

Wat zijn Kubernetes?

Kort gezegd: wat zijn Kubernetes hangt direct samen met Kubernetes. Wij leggen de samenhang in deze gids stap voor stap uit, zodat je de juiste keuzes maakt voor je omgeving.

Wat betekent Kubernetes wat is het?

Kort gezegd: Kubernetes wat is het hangt direct samen met Kubernetes. Wij leggen de samenhang in deze gids stap voor stap uit, zodat je de juiste keuzes maakt voor je omgeving.

Kun je Kubernetes bij Hostingway draaien?

Onze managed hosting draait op snelle NVMe-opslag en LiteSpeed in een eigen netwerk in Nederland. Neem contact met ons op, dan kijken onze engineers samen met je welke opzet past bij Kubernetes.

Is Kubernetes geschikt voor kleinere organisaties?

Ja. Ook kleinere teams hebben baat bij Kubernetes, mits de omgeving goed is ingericht. Wij adviseren je graag over een passende, beheersbare opzet.

Terug naar het blog

Verder lezen