March 18, 2024

K3s en K8s: wat zijn de verschillen?

Moderne organisaties hebben een grote behoefte aan schaalbare en betrouwbare IT-diensten om hun bedrijfsprocessen in goede banen te leiden en het serviceniveau hoog te houden. Om dat doel te bereiken, maken ze vaak gebruik van containertechnologie. Kubernetes, ooit ontstaan binnen Google als Borg, is vandaag de dag het orkestratieplatform bij uitstek voor het beheren, aanpassen en schalen van containers.

Tegelijkertijd is Kubernetes ‘by default’ zwaar en complex. Het kan voor beginnende gebruikers zonder uitgebreide voorkennis van het systeem dan ook een hele klus zijn om het platform te leren kennen en gebruiken. Toch zijn er manieren om de complexiteit van Kubernetes te verminderen en het leerpad minder steil te maken, bijvoorbeeld door gebruik te maken van K3s. Maar wat is K3s? En wat is het verschil met K8s? We vertellen het je in dit blogartikel!

Wat is K3s?

Je kunt K3s zien als een lichtgewichtversie van Kubernetes. K3s is ontwikkeld door Rancher Labs, een ontwikkelaar van opensourcesoftware uit Californië. Je implementeert het als één binair bestand en krijgt gelijk de beschikking over ingesloten hulpprogramma’s als kubectl en ctr. Omdat K3s kleiner dan 100 MB is, vormt het een ideale oplossing voor omgevingen waarbinnen beperkte resources beschikbaar zijn.

Je kunt K3s zien als een versie van Kubernetes die ontdaan is van extra massa en een andere onderliggende datastore gebruikt. Het compacte ontwerp doet weinig tot geen afbreuk aan de kerncomponenten van het ‘complete’ Kubernetes. Ook qua functionaliteit doet K3s amper onder voor zijn gewichtigere neefje.

Wat is K8s?

K8s is een alternatieve naam voor Kubernetes die vooral gebruikt wordt door insiders die bekend zijn met het systeem. Het is dus de originele en ongecomprimeerde zwaargewichtversie van het orkestratieplatform die helemaal afgestemd is op het beheren van grote groepen containers en zware, complexe applicaties die gebruikmaken van containertechnologie. Kubernetes zorgt onder meer voor load balancing, failover, het aanmaken van containers, het vervangen van slecht werkende containers door nieuwe, de routering van netwerkverkeer bij grote drukte en automatische op- en afschaling van resources.

Lees ook de blog: Wat is Kubernetes en wat zijn de voor- en nadelen?

De voordelen van K3s

Net als de meeste IT-technologie heeft K3s zijn specifieke voordelen, maar ook enkele potentiële nadelen. Een belangrijke pré van deze variant van ‘Kubernetes light’ is de bescheiden omvang. Omdat K3s kleiner dan 100 MB is, kun je de oplossing gebruiken in omgevingen waarbinnen slechts een bescheiden of begrensde hoeveelheid resources beschikbaar is. K8s is in zulke gevallen vaak te zwaar. De lichtheid van K3s zorgt er bovendien voor dat de oplossing bij veel workloads aanzienlijk sneller is dan K8s en je de mogelijkheid geeft om containers te draaien en orkestreren op plekken waar Kubernetes voorheen nooit kon komen. Denk bijvoorbeeld aan bepaalde single-node clusters. K3s is al met succes gebruikt in satellieten, vliegtuigen, retaillocaties en slimme steden waar het gebruiken van Kubernetes normaal niet mogelijk is door de gelimiteerde hoeveelheid beschikbare resources.  

Daarnaast is K3s razendsnel beschikbaar en bruikbaar. Installeren kan met slechts één commando en is vaak in minder dan een minuut (tegenover de tien minuten of meer die je bij K8s nodig hebt) tijd gepiept. Het is bovendien een simpel klusje dankzij het ‘single binary package’ waar K3s gebruik van maakt. Deployment op afstand is ook prima te doen met K3s.

Door de bescheiden grootte en betrekkelijke eenvoud, zijn er binnen K3s weinig afhankelijkheden waar je rekening mee moet houden. Dit betekent dat het platform makkelijk te updaten is en dat het aanvalsoppervlak (niet onbelangrijk vanuit het oogpunt van security) beperkt blijft, zeker in vergelijking met het omvangrijke K8s.

Voor ontwikkelaars biedt K3s ook de nodige flexibiliteit en veelzijdigheid. CI/CD-systemen kunnen met K3s clusters draaien binnen Docker en applicaties testen voordat ze naar de productieomgeving gaan. Productieomgevingen maken in K3s probleemloos gebruik van HA-geconfigureerde clusters die de applicatie afleveren bij de eindgebruiker. Omdat K3s de runtime scheidt van de workloads, kun je het systeem gemakkelijk stoppen en opnieuw opstarten zonder dat dit effect heeft op lopende processen.

Nadelen van K3s

Is het dan alleen goud dat blinkt aan de K3s-horizon? Niet helemaal. Zoals vrijwel elke toepassing, heeft ook K3s haar beperkingen. De compactheid is vaak handig, maar soms een achilleshiel. K3s schiet op het gebied van configuratiemogelijkheden en schaalbaarheid tekort als je te maken hebt met hele grote en complexe clusters en applicaties. In zo’n geval zijn de bredere functionaliteit en uitgebreide configuratie-opties van K8s echt wel nodig. Daarnaast biedt K3s een beperktere compatibiliteit met Kubernetes-extensies en -tools dan zijn neefje. Ook het aantal standaard ingebouwde functionaliteiten is in K3s lager dan in K8s.

De voor- en nadelen van K8s

De voordelen van K8s zitten hem vooral in het ongelooflijk uitgebreide aanbod aan extra functionaliteiten en configuratiemogelijkheden. Maatwerkopties per applicatietype, automatische failover, redundantie op clusterniveau, uitgebreidere auto-scaling en veel meer extensies: het zijn opties die ervoor zorgen dat het K8s-ecosysteem een rijk keuzepalet biedt waar K3s niet aan kan tippen.

Het nadeel van die keuzerijkdom en volledigheid is volume en complexiteit. K8s stelt hoge eisen aan het beschikbare aantal resources, je IT-infrastructuur en de IT-kennis van gebruikers. Daarnaast heeft K8s een uitgebreidere codebase dan K3s, wat leidt tot een groter aanvalsoppervlak. Beveiliging is dus een aandachtspunt waar je dicht op moet zitten als je kiest voor K8s.

Lees ook de blog: Kubernetes security: 11 best practices.

K3s of K8s kiezen?

Of K3s of K8s de juiste keuze is, hangt sterk af van de toepassing waar je Kubernetes op wilt loslaten. K3s is de beste optie voor kleinere, minder complexe projecten en deployments waarbij het aantal beschikbare resources beperkt is. Voorbeelden van typische K3s-toepassingen zijn IoT en edge computing.

K8s is je ideale kompaan voor het uitvoeren van grote, complexe en resource- en data-intensieve projecten en toepassingen. Denk hierbij aan big data, machine learning en high-performance computing. Kijk per toepassing en project dus goed naar wat je precies nodig hebt en prioriteert. Voldoet een lichtere, gemakkelijk te gebruiken Kubernetes-distributie als K3s of heb je het volledige scala aan features, configuratiemogelijkheden en extensies nodig dat Kubernetes te bieden heeft?

Haal het beste uit K3s en K8s met Managed Kubernetes van ACC ICT

Wil je het beste halen uit de mogelijkheden van K3s of K8s? En ben je op zoek naar een betrouwbare en kundige partner die je helpt met de inrichting en het beheer? Dan is Managed Kubernetes van ACC ICT iets voor jou. De dienst is beschikbaar op elke cloud en combineert continue beschikbaarheid met schaalbaarheid en flexibiliteit.

Als je kiest voor Managed Kubernetes (K3s of K8s) kun je rekenen op:

  • Een multidisciplinair team. Deze experts kennen alle ins en outs van Kubernetes en helpen je graag met alle aspecten van K3s en K8s.
  • 24/7-support en continue monitoring van je Kubernetes-omgeving. We signaleren eventuele problemen tijdig en helpen je bij het oplossen ervan.
  • Veel aandacht voor security. We hanteren beproefde security-baselines voor het beheren van Kubernetes op elke cloud en maken heldere afspraken over anti-ddos, web application firewalls, vulnerability scanning, security logging & alerting en lifecycle management.
  • We beschikken over de juiste en belangrijke certificeringen. Denk aan ISO 27001 en 9001, NEN 7510, ISAE 3402 Type II en KCSP.
Deel deze post
Ronald Kers
Ronald behoort tot de harde kern die meer dan 10 jaar in dienst is bij ACC ICT. Als contentmarketeer schrijft Ronald graag over technologische ontwikkelingen binnen de IT-branche. Met een achtergrond als system administrator weet hij als geen ander complexe materie in begrijpelijke taal uit te leggen.