Je kunt als applicatie-ontwikkelaar tegenwoordig eigenlijk niet meer om Kubernetes heen. Het open-source platform voor containerorkestratie wint steeds meer populariteit en dat is niet zonder reden. Om die populariteit te snappen, moeten we eerst weten wat Kubernetes is, hoe Kubernetes als containertechnologie tot stand is gekomen en hoe dit verschilt ten opzichte van Virtual Machines. In deze blogpost nemen we je mee in de oorsprong van Kubernetes, het ecosysteem en de voordelen.
Bekijk ook onze Managed Kubernetes dienst
Wat is Kubernetes nu eigenlijk?
Kubernetes (ookwel k8s) is een open-source systeem om grote groepen containers en gecontaineriseerde applicaties eenvoudig(er) beheren. Met Kubernetes zijn componenten te orkestreren die komen kijken bij de hosting van een gecontaineriseerde applicatie: computing, netwerk, opslag en allerlei type workloads.
Waar komt Kubernetes vandaan? De geschiedenis van Kubernetes
Kubernetes is Grieks voor âstuurman voor een schipâ. Kubernetes begon als open-source project bij Google om gecontaineriseerde applicaties mee te orkestreren en beheren. Een aantal Google-engineers ontwikkelde de software om de groeiende hyperscale infrastructuur te kunnen ondersteunen, waar dringend behoefte aan was. Om meer kennis te vergaren, besloten zij Kubernetes te open-sourcen. Zo konden ook andere engineers niet alleen profiteren van de krachtige software, maar ook meewerken in de ontwikkeling ervan. Inmiddels wordt de orkestratietool door meer dan de helft van de Fortune 100-bedrijven ingezet.
Waarom wint Kubernetes zo aan populariteit? En hoe helpt het ecosysteem rondom Kubernetes met het orkestreren van gecontaineriseerde applicaties? Om te snappen wat Kubernetes doet, duiken we eerst in de wereld van containers en waarom deze steeds vaker ingezet worden.
Video: Kubernetes uitgelegd
In onderstaande video wordt Kubernetes uitgelegd aan de hand van illustraties. Termen als pods, replication controller en namespaces worden op heldere manier uitgelegd.
Lees ook: Vier redenen waarom je niet meer om Kubernetes heen kan
De wereld van Kubernetes: het gebruik van containers in plaats van virtual machines
Kubernetes is een systeem om gecontaineriseerde applicaties te kunnen beheren. Daarmee is de wereld van Kubernetes wezenlijk anders dan een applicatie die op Virtual Machines draait. Wat zijn beide manieren van hosten en wat zijn de verschillen?
Wat is een Virtual Machine?
Een Virtual Machine is de software die ervoor zorgt dat een fysieke server (hardware) tot meerdere virtuele servers omgetoverd wordt.
Middels een hypervisor (speciale software voor servers) wordt het mogelijk om meerdere Virtual Machines te runnen op een fysieke server. De hypervisor âhaktâ de server als het ware in kleine stukjes en verdeelt de componenten tot er meerdere Virtual Machines ontstaan.
Elke Virtual Machine bestaat dan uit een volledige kopie van een besturingssysteem, de applicatie (bijv. een website, bijhorende software voor database, etc.) en eventueel nodige binaries en libraries. Virtual Machines bestaan vaak uit tientallen GBâs en veel extra capaciteit die je wel moet installeren maar eigenlijk niet in zân volledigheid gebruikt.
Wat zijn containers?
Containers zijn applicaties die slechts ĂŠĂŠn of enkele processen kunnen draaien. Dat kan bijvoorbeeld een kleiner proces zijn zoals het inloggen binnen een applicatie, of het hosten van een framework zoals NodeJS. Delen van deze applicaties zijn heel compact te isoleren in een container, waardoor je enkel alleen de middelen gebruikt die je nodig hebt voor die specifieke functionaliteit of proces. Je kunt er bijvoorbeeld voor kiezen om een het Laravel-framework te gebruiken voor functie X, en het Symfony-framework voor functie Y. Dit is tevens een goede basis voor het ontwikkelen van microservices.
Lees ook: Waarom Laravel het beste PHP-framework is voor webapplicaties dienst
Wat is het verschil tussen Virtual Machines en containers?
Het verschil tussen containers en Virtual Machines is het duidelijkst als het aantal gebruikers van een webapplicatie heel hard groeit. Daarmee heeft de app meer resources nodig en moeten er meerdere Virtual Machine instanties van de app draaien.
Traditioneel wordt dat altijd gedaan door nieuwe Virtual Machines toe te voegen. Dat betekent echter ook dat je alle extraâs van een Virtual Machine erbij moet hosten: het besturingssysteem, de middleware (frameworks, libraries, software voor de server) en de applicatie zelf (bijvoorbeeld WordPress, Magento). Alles bij elkaar wordt er best wat computerrekenkracht ingezet, terwijl een applicatie dit niet altijd per se nodig heeft. Met containers installeer je simpelweg alleen datgene wat je nodig hebt.
Wat zijn de voordelen van containers?
Een veelgenoemd voordeel van containers is de flexibiliteit die ze bieden. Dat geeft ontwikkelaars meer keuzevrijheid, waardoor uiteindelijk een verbetering in ontwikkelsnelheid ontstaat. Containers zijn daarnaast overdraagbaar. Dit betekent dat een container in theorie probleemloos op een server, on-premise, op een desktop of op een laptop kan werken. Je kunt bijvoorbeeld lokaal de container installeren, configureren etcetera en dit overzetten naar een lokale of internationale cloudserviceprovider. Het is hierdoor eenvoudiger om containers uit te rollen waar ze het best tot hun recht komen. Ook is er snel nieuwe capaciteit bij te boeken waar nodig.
Containers zijn onder andere zeer populair bij het creĂŤren van een microservice-architectuur. Bij interne ontwikkelteams is het bijvoorbeeld populair omdat iedere developer exact dezelfde versies gebruikt. Er zijn geen lokale verschillen meer. Een gelijkheid die je mee wilt nemen naar je productieplatform, zodat alle services identiek zijn van ontwikkelomgeving, tot testomgeving, acceptatie-omgeving en productie-omgeving.
Kubernetes inrichten: een flinke uitdaging
Het inrichten van Kubernetes bevat veel van de handelswijzen die je wellicht kent van een Platform-as-a-Service provider (of van een Infrastructure-as-a-Service provider, zoals Azure of Amazon Web Services). Het bestaat uit veel opties om alles aan elkaar te knopen en om zo je ideale set-up te creĂŤren voor een gecontaineriseerde applicatie of een Kubernetes-cluster.
Kubernetes is dan ook allesbehalve eenvoudig. Ondanks onze eigen uitgebreide ervaring met Kubernetes merken we ook bij True dat het inrichten van de beschikbare storage, infrastructure, load balancing en IP-allocatie een flinke uitdaging is. Ook zou je voor de hosting van populaire frameworks eigenlijk templates willen bouwen, zodat het developers minder tijd kwijt zijn aan het doorgronden van de complexiteit die bij Kubernetes komt kijken.
Lees meer over de groei en toekomst van Kubernetes
Deze blog is gepubliceerd op 3 april 2019 en volledig geactualiseerd op 27 oktober 2021