Terug naar blogs
Opinie 10 min leestijd

Kubernetes: de overkill die je waarschijnlijk niet nodig hebt

Waarom kleine bedrijven met een handvol developers en voorspelbare load geen Kubernetes nodig hebben, wat het ze kost, en wat ze in plaats daarvan zouden moeten doen.

Het is 2026 en toch zie ik het nog steeds gebeuren: kleine bedrijven met een paar developers, een relatief eenvoudige webapplicatie en voorspelbare, beperkte traffic die besluiten Kubernetes te implementeren. Niet omdat hun product het nodig heeft, maar omdat "Netflix het ook gebruikt", omdat het zogenaamd de standaard is, of simpelweg omdat een Kubernetes-implementatie als prestigeproject wordt gezien. In deze opinie ontleed ik waarom Kubernetes voor het overgrote deel van de bedrijven vooral extra complexiteit toevoegt — en zelden echte waarde oplevert.

Het probleem dat je niet hebt

Kubernetes is ontworpen voor een specifiek probleem: het orkestreren van duizenden containers over honderden servers, met automatische scaling, self-healing en zero-downtime deployments op enorme schaal. Google bouwde het omdat zij dit probleem daadwerkelijk hadden.

Heb jij dit probleem? Waarschijnlijk niet. Als je load voorspelbaar is — wat bij de meeste applicaties gewoon het geval is — als er geen fulltime DevOps-team beschikbaar is, en als je applicatie prima draait op een paar servers, dan ben je een probleem aan het oplossen dat je in de praktijk helemaal niet hebt.

De verborgen kosten

Wat ik in de praktijk zie:

  • 1. Kennisconcentratie: In een klein team is er vaak maar een persoon die Kubernetes echt snapt. Als die persoon ziek is of vertrekt, heb je een serieus probleem. De leercurve is zo steil dat niet iedereen het zomaar oppakt.
  • 2. Operationele overhead: Kubernetes clusters moeten onderhouden worden. Updates, security patches, monitoring, logging — het vraagt continue aandacht. Aandacht die je developers hadden kunnen besteden aan features.
  • 3. Debugging complexiteit: Iets werkt niet? Succes met het uitzoeken of het aan je applicatie ligt, aan je container configuratie, aan je pod specs, aan je service mesh, aan je ingress controller, of aan een van de tientallen andere bewegende onderdelen.
  • 4. Cloud kosten: Een managed Kubernetes cluster (EKS, GKE, AKS) kost al snel honderden euro's per maand, los van de compute resources. Voor wat? Om een handvol containers te draaien die ook prima op een betaalbare VPS hadden gekund?

Performance overhead

Wat ook vaak vergeten wordt: Kubernetes kan applicaties in kleine omgevingen juist trager maken. In plaats van een krachtige server die tijdens piekmomenten tijdelijk meer CPU of RAM kan gebruiken, wordt capaciteit opgesplitst in tientallen kleine pods met strakke resource limits.

In theorie is dat efficient. In de praktijk betekent het extra network hops tussen services, meer latency door de overlay networking van Kubernetes, en minder flexibiliteit tijdens piekbelasting. Vooral databases en stateful services kunnen hier merkbaar last van hebben — juist de componenten waar performance het meest telt.

De resource-realiteit

Laten we het concreet maken. Stel: je hebt een budget waarmee je ongeveer 32 GB RAM aan compute kunt draaien. Hoe ziet dat er in de praktijk uit?

Kubernetes cluster

Random Laravel setup

Typische pods (6-10 totaal)

  • 2-3x Web pod (PHP-FPM)
  • 2-4x Queue worker
  • 1x Scheduler / cron pod
  • 1x Ingress controller

Resources (effectief beschikbaar)

CPU 6-8 vCPU
RAM bruikbaar 16-24 GB
Overhead (kube-system, OS, monitoring) 8-16 GB

Maandelijkse kosten

€150 - €600

Nodes + control plane + LB + monitoring. Hetzner aan de onderkant, AWS/GCP aan de bovenkant.

  • Harde pod resource limits
  • Resource fragmentatie over pods
  • Extra network hops (overlay networking)
  • Beperkt burst gedrag

Dedicated server

Vergelijkbaar of lager budget

Setup

  • Nginx + PHP-FPM
  • Queue workers via Supervisor
  • Cron via crontab
  • Database lokaal of managed

Resources (volledig beschikbaar)

CPU 8-16 vCPU
RAM bruikbaar 32 GB
Storage NVMe SSD

Maandelijkse kosten

€40 - €250

Hetzner dedicated vanaf ~€44 (64 GB!), DigitalOcean/OVH in de middenklasse.

  • Volledige resources beschikbaar
  • Burst naar volledige capaciteit
  • Geen network overhead
  • Simpel te beheren

Piekbelasting: wie wint?

Kubernetes

"Iedere workload krijgt zijn eigen kleine resource sandbox."

Pod limits throttlen je applicatie, zelfs als de node nog capaciteit over heeft. Queue spike? Wachten tot de HPA opschaalt — als je dat al geconfigureerd hebt.

Dedicated server

"De hele machine werkt voor wie het op dat moment nodig heeft."

Queue spikes, import jobs, reporting queries — alles kan tijdelijk meer CPU en RAM gebruiken zonder configuratie of wachttijd.

En wordt je server te klein? Bij de meeste hosters schaal je met een paar klikken op naar meer CPU en RAM. Downtime: vaak een paar minuten. Geen migratie naar een complex cluster nodig, geen autoscaling policies, geen extra observability tooling. Vertical scaling is voor 9/10 omgevingen verrassend lang toereikend.

Je applicatie moet ook mee

Wat vaak onderschat wordt: het is niet alleen je infrastructuur die verandert als je naar Kubernetes gaat. Je applicatiecode zelf moet er ook klaar voor zijn. Dingen die op een normale server vanzelfsprekend zijn, worden in een Kubernetes-omgeving ineens engineering challenges die dev-cycles kosten.

  • File storage: Op een server schrijf je een upload naar disk en klaar. In Kubernetes heeft iedere pod zijn eigen ephemeral storage. Pod A schrijft een bestand, pod B kan het niet lezen. Je moet shared storage opzetten (PersistentVolumeClaims met ReadWriteMany — complex en duur) of alles migreren naar object storage zoals S3. Code die Storage::put() doet, moet ineens herschreven worden.
  • Sessions en cache: File-based sessions en cache werken niet meer als requests over meerdere pods verdeeld worden. Je hebt Redis of een database-backed session driver nodig — extra infrastructuur die je anders niet had gehad.
  • Configuratie: Op een server drop je een .env bestand en je bent klaar. In Kubernetes wordt dit ConfigMaps voor niet-gevoelige waarden en Secrets voor credentials, eventueel met tools als Sealed Secrets of External Secrets Operator om ze veilig te beheren. Een simpele configuratiewijziging gaat van "bestand aanpassen, service herstarten" naar "Secret updaten, rollout restart triggeren, controleren of alle pods de nieuwe config hebben opgepikt."
  • Cron jobs: Op een server voeg je een regel toe aan crontab en het werkt. In Kubernetes heb je CronJob resources nodig met eigen concurrency policies, history limits en failure handling. Meer YAML, meer bewegende onderdelen, meer dat fout kan gaan.
  • Database migraties: Op een server draai je php artisan migrate en klaar. Met meerdere pods moet je garanderen dat slechts een pod tegelijk migraties draait — via init containers of Kubernetes Jobs. Anders krijg je race conditions op je database schema.

Kortom: een Kubernetes-migratie is niet alleen een infrastructuur-beslissing. Het is een applicatie-refactor die dev-cycles kost, extra complexiteit introduceert en je team opzadelt met problemen die op een normale server simpelweg niet bestaan. Problemen waar je business geen enkel voordeel uit haalt.

Wanneer het WEL zin heeft

Even voor de duidelijkheid: Kubernetes is geen slechte technologie. Het is geweldige technologie, voor de juiste use case. Overweeg Kubernetes als:

  • Je daadwerkelijk moet schalen naar honderden of duizenden containers
  • Je een dedicated platform/DevOps team hebt dat zich hierop kan focussen
  • Je load onvoorspelbaar is en je echt auto-scaling nodig hebt
  • Je meerdere teams hebt die onafhankelijk van elkaar moeten kunnen deployen

Wat je ook zou kunnen doen

Voor de meeste kleine tot middelgrote bedrijven is dit een veel betere setup:

  • Een managed platform: Laravel Forge, Ploi, of zelfs gewoon Heroku. Zero-downtime deployments, SSL, monitoring — zonder de complexiteit.
  • Simpele VPS'en: DigitalOcean, Hetzner, of OVH. Betaalbaar, betrouwbaar, en iedereen in je team kan ermee overweg.
  • Docker Compose voor development: Consistent tussen development en productie, zonder de orkestratie overhead.
  • Serverless voor specifieke workloads: AWS Lambda of Cloudflare Workers voor die ene functie die wel moet schalen.

De bottomline

Kies je technologie op basis van je daadwerkelijke problemen, niet op basis van wat er hip is of wat grote techbedrijven gebruiken. Die bedrijven hebben andere problemen dan jij. En onthoud: de beste infrastructuur is de infrastructuur waar je niet over na hoeft te denken, zodat je je kunt focussen op wat echt waarde oplevert voor je klanten.

Herken je dit? Zit je vast met een te complexe setup? Laat het me weten — ik help graag om dingen weer simpel te maken.

Jelmer de Vries

Jelmer de Vries

Full-stack Developer bij TransHeroes. Houdt van simpele oplossingen voor complexe problemen.