Wat is Kubernetes

Wat is Kubernetes en waarom is het bijzonder?

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 natuurlijk niet zonder reden. Om die populariteit te snappen moeten we eerst snappen hoe containertechnologie tot stand is gekomen en hoe dit verschilt ten opzichte van Virtual Machines. In deze blogpost nemen we je mee in de begindagen van Kubernetes en het ecosysteem hieromheen.

De oorsprong van Kubernetes

Kubernetes begon als open-source project bij Google om containerized applicaties mee te orkestreren en beheren. Kubernetes is Grieks voor ‘stuurman voor een schip’, maar zo werd het nog niet gelijk genoemd. Een aantal Google-engineers ontwikkelde de software om de groeiende hyperscale infrastructuur te kunnen ondersteunen, want dat was dringend nodig. Om meer kennis te vergaren, besloten zij de software 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 54% van de Fortune 500-bedrijven ingezet.

Hoe komt het dat juist deze orkestratietool de afgelopen jaren aan populariteit wint? En hoe helpt het ecosysteem rondom Kubernetes met het orchestraten van containerized applicaties? Om te snappen wat Kubernetes doet, moeten we eerst duiken in de wereld van containers en waarom deze steeds vaker ingezet worden.

Containers versus Virtual Machines

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, maar daar spelen we verder op in.

Een veelgenoemd voordeel van containers is de flexibiliteit die ze bieden, wat ontwikkelaars meer keuzevrijheid geeft en 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 dus bijvoorbeeld lokaal de container installeren, configureren etc en dit overzetten naar een lokale of internationale cloudserviceprovider. Het is hierdoor eenvoudiger om containers uit te rollen waar ze het best tot recht komen, maar bijvoorbeeld om snel nieuwe capaciteit bij te boeken indien dit nodig is.

Containers zijn onder andere zeer populair bij het creëren van een microservice-applicatie-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.

De verschillen tussen containers en Virtual Machines

Het hosten van container is wezenlijk anders dan het hosten van Virtual Machines. Een Virtual Machine is – heel plat gezegd – 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 en 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 containters en wat zijn virtual machines
Links: een containerized omgeving. Rechts: een virtual machine omgeving. Bron afbeelding: Docker.

Virtual Machines

De verschillen tussen containers en Virtual Machines zijn het best duidelijk te maken wanneer het aantal gebruikers van een webapplicatie hard aan het groeien is. Als een applicatie groeit en meer resources, moeten er meerdere Virtual Machine instanties van een app draaien.

Traditioneel deden we dat altijd door nieuwe Virtual Machines toe te voegen, maar je raadt het al: dat betekent 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 (vb. 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 datgene wat je nodig hebt.

Wat is Kubernetes?

Kubernetes, ook wel k8s genoemd, is kort gezegd een open-source systeem beheren van grote groepen containers en containerized applicaties. Met de software zijn containers te groeperen en in theorie eenvoudig(er) te beheren.

Binnen het platform zijn diverse componenten te orkestreren die komen kijken bij de ‘hosting’ van een containerized applicatie, zoals computing, netwerk, storage en allerlei type workloads. Het 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): veel opties om alles aan elkaar te knopen en om je ideale set-up te creëren voor een containerized applicaties of een Kubernetes-cluster.

Kubernetes is dan ook allesbehalve eenvoudig. Zo merken we bij True dat het ondanks het inrichten van de beschikbare storage, infrastructuur, load balancing en IP-allocatie nog flinke uitdagingen zijn. Ook zou je voor de hosting van populaire frameworks eigenlijk templates willen bouwen, zodat het developers minder tijd kwijt zijn aan het uitvogelen aan de complexiteit die bij de Kubernetes-belofte komt kijken.

Video: Kubernetes uitgelegd voor kinderen

In onderstaande video wordt Kubernetes haarfijn uitgelegd aan de hand van illustraties. Termen als pods, replication controller en namespaces worden op eenvoudige manier uitgelegd.



Wat doet True met Kubernetes?

Bij True zijn we met volle enthousiasme begonnen met het leveren van managed Kubernetes omgevingen aan klanten. Een select aantal klanten zit op het moment in een private beta; wat betekent dat we samen onderzoeken naar de beste templates en container set-ups per specifieke situatie.

Bij iedere klant schakelen we een Solutions Architects in die meedenkt in het voortraject voor de meest optimale inrichting die daarna gerealiseerd, gemonitord en geüpdatet wordt. Afwijkingen in de containerized applicatie of binnen Kubernetes signaleren we vroegtijdig en communiceren hier ook over met onze klant.

Zo kunnen developers profiteren van alle voordelen van managed container hosting terwijl True de omgeving 24×7 ondersteunt, monitort en ingrijpt wanneer nodig. Hierin gaan we verder dan enkel de containerized applicatie optimaal laten landen op ons hostingplatform. Zo adviseren we sommige klanten ook om bestaande legacy-applicaties gefaseerd naar een microservice-architectuur te brengen.

Een aantal van onze klanten zitten op dit moment in de private beta van Managed Kubernetes. Ben je benieuwd naar de geleerde inzichten? Schrijf je in op true.nl/kubernetes en ontvang als eerste onze nieuwste Kubernetes- en container-verhalen. 

Wat is Kubernetes
Kilian Drewel
Contentmarketeer
Deel dit artikel via sociale media:
Managed Kubernetes - True van start met private bèta

Technology - 31.01.2019

Vanaf vandaag is True gestart met een private bèta voor managed Kubernetes hosting. Kubernetes is een orkestratieplatform die het beheer van containerized applicaties vereenvoudigt. Containertechnologie is een technologie die heel compact één of enkele processen van een applicatie kan draaien. Dit kan bijvoorbeeld een NodeJS applicatie of een nginx-webserver inclusief een PHP-applicatie zijn. Binnen de […]

Is de Kubernetes hype voorbij?

IT-management - 12.03.2019

Kubernetes wordt door velen gezien als de de facto standaard voor het orchestraten van containerized applicaties. Waar gebruiken organisaties het voor, welke uitdagingen komen ze tegen en is Kubernetes een hype, of is deze voorbij? We vroegen het aan Kubernauts tijdens de Kubernetes Meetup op 19 februari 2019. Kubernetes: een hype’ of ‘here to stay’? […]

Kubernetes as a Serivice talk during the Kubernetes Meetup

Events - 22.02.2019

Dinsdag 19 februari vond er een Kubernetes Meetup plaats in de warehouse bij True. Ruim 200 Kubernauts kwamen langs om kennis uit te wisselen over Kubernetes in de praktijk. Het was de grootste Meetup bij True ooit.  Alexander Charykov, innovation engineer bij True, vertelde over het ontwikkelen van Kubernetes-as-a-Service (KaaS 🧀) bij een managed hostingprovider. […]

Blijf op de hoogte en schrijf u in voor onze nieuwsbrief
Schrijf u in voor de nieuwsbrief

Vraag offerte aan

Vul onderstaand formulier in. True neemt zo snel mogelijk contact met u op.