Kubernetes ontrafeld: alles wat je moet weten
Kubernetes is een tool voor het coördineren van groepen containers en gecontaineriseerde applicaties. Het begon als een open-source project binnen Google en kreeg al snel de bijnaam “k8s”. In de eerste instantie was het bedoeld om tegemoet te komen aan de toenemende complexiteit van infrastructuur. Sinds 2013 heeft Kubernetes zich gestaag ontwikkeld tot het prominente platform dat het vandaag de dag is.
Wist je dat het woord Kubernetes Grieks is voor stuurman, of piloot?
Waarom hebben we Kubernetes nodig?
Om Kubernetes echt te begrijpen, is het belangrijk dat we eerst het begrip van containers uitleggen. Containers zijn een middel om toepassingen op servers efficiënter en betrouwbaarder te hosten dan wanneer je gebruikmaakt van virtuele machines of wanneer je iets fysiek host op de server.
In de wereld van vandaag verwachten gebruikers dat een website of service te allen tijde bereikbaar is, want we leven in een samenleving die altijd aanstaat, ongeacht de tijd of plek waar iemand zich bevindt. De laatste jaren hebben ons duidelijk gemaakt dat de online wereld bijna net zo belangrijk is, zo niet belangrijker, dan de fysieke wereld. Die wereld moet natuurlijk blijven draaien. Dat is niet zo makkelijk als het lijkt.
Online websites en diensten draaien steeds complexere programma’s die meer rekenkracht vereisen, en dat kan voor de nodige problemen zorgen als we alleen vertrouwen op ‘oudere’ methodes: zoals het gebruik van virtuele machines of fysieke hosting. Containers zorgen ervoor dat individuele componenten van een dienst of website kunnen blijven werken ook al worden onderdelen van deze locaties veranderd of zelfs in zijn geheel verwijderd.
Wat zijn virtuele machines?
Voordat we massaal gebruik gingen maken van Kubernetes, verliep alles via het gebruik van een virtual machine die de meesten wel kennen in de vorm van een VPS of cloud server. De kans is nagenoeg nihil dat je op wat voor manier dan ook in de laatste paar jaren geen gebruik hebt gemaakt van een virtual machine, of VM in het kort. Met een proces genaamd virtualisatie kan je fysieke servers omzetten in virtuele servers, oftewel een VM. Dat kan gemakkelijk via gespecialiseerde virtualisatiesoftware zoals VMware.
Met behulp van een speciale op server-gerichte software genaamd de hypervisor is een bedrijf in staat om meerdere van deze virtuele machines op één server te draaien. In de techwereld noemen we dit virtualisatie. Hierdoor werd de nood voor grote serverruimtes zoals je die nog ziet in spionagefilms een stuk kleiner, en kunnen bedrijven makkelijker opschalen zonder hun fysieke locaties ook te moeten opschalen.
Dankzij virtualisatie bestaat elke virtuele machine uit een kopie van het besturingssysteem, de applicatie die het moet draaien (denk hierbij aan specifieke software of websites) en de benodigde libraries en binaries. Deze manier van hosting is beduidend beter dan de fysieke benadering, maar toch heeft het zo zijn nadelen.
Doordat virtuele machines gedigitaliseerde versies zijn van echte computers, is een VM alles behalve ‘licht’. Een virtuele machine kan al snel meerdere gigabytes groot zijn en als je meerdere VM’s op een fysieke server draait dan loopt dat aantal al snel op. Opslagruimte is niet het enige probleem waar je tegenaan loopt als je veel gebruikmaakt van deze manier van virtualisatie. Ook de RAM en de processor van een server worden behoorlijk belast als er meerdere machines tegelijkertijd draaien op de hostserver.
Wat zijn containers?
Virtuele machines vergen veel resources en dat moet anders kunnen, dachten ze in de techwereld. Daarom kwamen we aan bij containers: kleine applicaties die zijn gecreëerd om slechts enkele processen te draaien zonder de bijbehorende bulk die een virtuele machine met zich meedraagt. Een container draagt als het ware alle componenten met zich mee die hij nodig heeft om zijn beoogde missie uit te voeren. Deze containers kunnen in elke omgeving en in elk framework draaien zonder dat de dienst aangepast moet worden. Zo kan een specifieke container op een datacenter draaien, in de cloud of op de laptop van een ontwikkelaar of klant.
Software is nu eenmaal makkelijker te onderhouden en te ondersteunen als je de focus kan leggen op kleinere, individuele processen. Als je een groot feestmaaltijd wilt bereiden voor je familie of vrienden gebruik je ook niet maar een gaspitje. Nee, je gebruikt alle gaspitjes die je tot je beschikking hebt, de oven gaat aan, de magnetron kan je gebruiken en je kan alvast de waterkoker aanzetten zodat je aardappelen sneller klaar zijn.
Dit is natuurlijk een beetje kort door de bocht, maar het idee is duidelijk. Taken worden gesimplificeerd in kleinere, behapbare stukjes. Dit noemen we in de techwereld ook wel microservices en elk groot bedrijf in de wereld maakt hier maar al te graag gebruik van.
Publieksfavoriet Netflix maakt hier gretig gebruik van op hun platform. Als je inlogt op de streamingdienst dan gebruik je een microservice, als je het menu opent om een genre film te kiezen dan gebruik je een microservice, als je vooruit spoelt, de ondertiteling aanzet, informatie ophaalt over de film.
Je begrijpt het idee: dit zijn allemaal kleine applicaties die zich richten op individuele processen. Op deze manier kan een bedrijf als Netflix dat per dag met miljoenen gebruikers te maken heeft het platform draaiende houden. Voorheen, toen er nog gebruik gemaakt werd van VM’s, konden er wel meerdere virtuele machines geopend worden binnen een fysieke server, maar alleen voor een aantal kleine taken.
Dus wat doet Kubernetes nou echt?
Dat is een goede vraag en het antwoord is vrij simpel. Kubernetes is een tool waarmee je de verschillende containers, die de microservices bevatten, kan opschalen en beheren.
Kubernetes is dan ook een orkestratietool waarmee je de containers kan orkestreren. Waarom de nadruk hierop? Het valt je misschien al op dat deze termen het woord orkest bevatten en aan de hand van deze term kunnen we het hele proces simplificeren.
Het orkest, of in technologische termen de node, bestaat uit verschillende musici die verschillende instrumenten spelen. Zo voegt de clarinet een specifieke klank toe aan het orkest, maar ook de trompet en de trombone horen er natuurlijk bij. Zonder de componist kunnen deze musici echter geen coherent geluid produceren, maar als de componist een mooi stuk schrijft dan krijgt elke muzikant hun benodigde partijen waardoor ze als een geheel in het orkest kunnen spelen. De dirigent zorgt er vervolgens voor dat alles draait zoals het hoort. De musici zijn de containers in dit verhaal, Kubernetes is de componist die ervoor zorgt dat alles werkt zoals het hoort te werken en dat de individuele componenten met elkaar communiceren. Daarnaast hebben we ook nog de cloudprovider die de rol van dirigent op zich neemt en zorgt dat het hele orkest draait zoals het hoort.
We kunnen er nog dieper op ingaan door uit te leggen dat meerdere containers in een pod kunnen zitten. Denk hierbij aan een grotere groep trompettisten binnen het orkest.
Het belangrijkste is dat je snapt dat je Kubernetes kan gebruiken om de verschillende microservices binnen containers, die je kan inzetten om virtuele machines te ontzien, te beheren en te orkestreren.
Download het Kubernetes e-book
{{{ data.title }}}
** Door het downloaden van dit white paper gaat u akkoord met onze privacy-, cookie– en algemene voorwaarden. Uw gegevens worden opgenomen in onze database en kunnen gedeeld worden met de samenstellers van deze downloads. We maken er u op attent dat u door deze samenstellers kan worden benaderd. U kan uw gegevens hier centraal bekijken, beheren, uitschrijven of aanpassen.