Grote kans dat je Kubernetes ergens voorbij hebt horen komen. Kubernetes is helemaal hot and happening! Maar waarom is iedereen zo enthousiast over een stukje technologie?
De basis van containers
Voordat we het over Kubernetes hebben, moeten we eigenlijk eerst even uitleggen wat containers zijn. Heel kort door de bocht zijn containers een techniek om je applicatie op een voorspelbare en reproduceerbare manier te draaien.
Containers zijn een manier om een applicatie en alles wat het nodig heeft om te draaien, makkelijk te isoleren. Waarom is dit belangrijk? Dit betekent dat de applicatie zich altijd op elke machine hetzelfde gedraagt. Weg zijn de tijden van: “Het werkte wel op mijn machine, waarom werkt het niet op de server?” en “Liever niet aan die server komen. Pietje is er niet en als de server kapot gaat, weet niemand behalve hij hoe het opgelost moet worden”. Containers kunnen makkelijk verplaatst worden en het resultaat is altijd reproduceerbaar. Dit leidt uiteindelijk tot een stabielere operatie van je applicaties.
De applicatie en de configuraties in een container veranderen nooit. Containers zijn dus onveranderbaar. Dit is belangrijk en vergt wat gewenning van de programmeur en de beheerders. Je logt namelijk niet in op een container en je installeert zelf geen codes en dependencies. In plaats daarvan maak je een container image aan met daarin al je configuraties. Daarna bouw je van die image de container. Valt de container uit of gaat die om een of andere reden kapot? Dan start je een nieuwe container en je bent weer online.
Containers zijn geïsoleerd voor makkelijk gebruik
Isolatie zorgt ervoor dat meerdere containers op één host kunnen draaien zonder dat ze elkaar in de weg zitten. De containers delen samen de kernel (de basis van een operating system) en de resources. Wat ze dus onderscheidt, is de applicatie en de dependencies in de container. Hierdoor zijn containers lichtgewicht en binnen minuten op te starten. Dit is veel efficiënter dan voor elke applicatie een aparte host te maken en te configureren.
Containers zijn dus makkelijk verplaatsbaar en reproduceerbaar. Dit zorgt ervoor dat de organisatie zich kan losmaken van vendor lock-in en flexibel wordt in het uitzoeken van een platform om zijn applicatie op te deployen.
Oké. Nu weten we wat een container is en waarom een container interessant is om je applicatie in te hosten. We hebben het echter nog niet gehad over de manier waarop je een container host. Wie start de container op, zorgt ervoor dat deze gezond blijft, wat moet er gebeuren als het druk wordt op een platform, load balancing, failover, netwerkverkeer, en nog veel meer? You get the picture. Alleen de container is niet voldoende. Enter Kubernetes!
Hoe Kubernetes de containers in orde houden
Kubernetes is een zogenaamde “container orchestrator”. Tegen Kubernetes zeg je: “Ik wil van deze container er altijd drie hebben draaien. En als het druk wordt, zet er dan nog maar ééntje bij. Oja, regel ook het netwerk maar en ik wil er graag een load balancer bij.” Kubernetes regelt die hele handel voor je.
Dit is natuurlijk een zeer gesimplificeerde versie van wat Kubernetes doet. Maar het is wel de onderliggende gedachte. Jij definieert wat je wil hebben en geeft het aan ‘m. Kubernetes zorgt daarna dat er in het cluster gebeurt wat jij wil. Het zet automatisch containers neer op een host in het cluster, regelt het netwerk, maakt een load balancer voor je aan en nog veel meer. Wanneer alles draait, zorgt Kubernetes ervoor dat deze status ook zo blijft werken. Gaat er een container kapot? Dan start Kubernetes weer een nieuwe. Wordt het rustig op de applicatie? Dan schaalt Kubernetes naar beneden.
Alleen al zoiets simpels als dit scheelt voor engineers heel veel tijd. Stel je even voor dat je zelf die hele handel moet configureren. Kubernetes is een combinatie van reproduceerbare workloads en een tool die workloads op een makkelijke manier managed. Dit resulteert in makkelijker innoveren van je werk. Je kunt op een snelle en betrouwbare manier een nieuwe applicatie online brengen of nieuwe features uitrollen in een bestaande. Dit geldt niet alleen op grote schaal, het is ook uitermate geschikt om in snelle en kleine iteraties applicaties te ontwikkelen. En dan hebben we het nog niet eens gehad over de documentatie die je daarbij moet maken om alle kennis in je organisatie te delen. Veel te veel werk die een je veel beter uit handen kan geven.
Even snel inzoomen op je documentatie. Omdat je aan Kubernetes een definitie doorgeeft van wat je wilt hebben, heb je in feite al een groot deel van je infrastructuur gedocumenteerd. Als je die definitie op dezelfde plek zet als je applicatie code, heb je een gedocumenteerde en reproduceerbare infrastructuur. Het tofste is misschien nog dat de hele Kubernetes community deze definities met elkaar deelt! Zo kun je veel van elkaar leren en je eigen werk optimaliseren.
Kubernetes is here to stay
Dit klinkt allemaal heel fancy, maar is Kubernetes niet een technologische hype die over een paar jaar weer voorbij is? Nee, eigenlijk is de hele technologische wereld overtuigd dat Kubernetes de infrastructuur van de toekomst is. Dit komt voornamelijk omdat de tool Open Source en generiek is. Iedereen kan zelf aan de slag en aanpassen naar zijn behoefte. Dit is goed te zien in het ecosysteem. Alle grote Cloud Providers bieden Kubernetes aan. Maar als je wilt, kan je zelf Kubernetes clusters in je eigen datacenter opzetten. Het grootste deel van de tech community is ook overtuigd van een glansrijke toekomst vanwege zijn samenwerkingen: Google, RedHat, IBM, Microsoft, Amazon, noem maar op. Zij werken eraan mee. Serieus, noem maar een invloedrijk technologiebedrijf en de kans is heel groot dat ze meewerken aan het project.
Het zijn overigens niet alleen de tech bedrijven die investeren in Kubernetes. Het zijn voornamelijk grote bedrijven met heel veel workloads die de technologie omarmen. 54% van alle Fortune 100 bedrijven gebruiken al Kubernetes. En de reden is heel simpel: groot bedrijf = veel workload. Hun leven wordt door Kubernetes een stuk makkelijker.
Google for the win
Kubernetes is een initiatief van Google en is ontwikkeld op basis van hun interne systemen. Google Search heeft best veel gebruikers, dus ze weten hoe ze applicaties op schaal stabiel moeten houden. Wij zijn dan ook fan van Google Kubernetes Engine, de gehoste versie van Kubernetes op Google Cloud Platform. Het neemt het aanmaken en online houden van je Kubernetes cluster helemaal voor zijn rekening. Daarnaast is Google nu ook druk bezig met een hybride variant van Google Kubernetes Engine. Wil je een deel van je Kubernetes cluster on-premise en een deel in de Cloud draaien? Google Kubernetes Engine On-Prem neemt veel overgebleven overhead voor je weg!