Blog overzicht

Kubernetes: wat is het en wat kan ik ermee?

Vanaf vandaag kun je bij TransIP ook terecht voor je eigen Kubernetes-cluster! Kubernetes is een opensourcesysteem waarmee je gecontaineriseerde applicaties beheert, deployt, op- of afschaalt en opnieuw opzet, en dat alles vanuit een gecentraliseerd systeem. TransIP biedt een Kubernetes-platform met een gratis managed control plane, zodat jij alleen hoeft na te denken over jouw clusters. Maar laten we eerst even 5 stappen terug zetten: wat is een container, en wat kan ik daarmee?

Containers

Een container is een geïsoleerd stukje software dat alleen de essentiële code bevat om een applicatie te laten draaien. Een container bevat bijvoorbeeld de uitvoerbare bestanden van de applicatie zelf, libraries die de applicatie nodig heeft en configbestanden die specifiek voor die ene applicatie gelden. Het heeft alleen een omgeving nodig met een besturingssysteem waar de applicatie op kan draaien om te werken. Daardoor kan een container heel makkelijk van de ene naar de andere serveromgeving worden verhuisd zonder dat er functionaliteit opnieuw gemaakt moet worden.

Containers lijken hierin op virtuele machines, met dat verschil dat de OS-bestanden en libraries helemaal apart gehouden worden van de uitvoerbare functies binnen de containers. Hierdoor zijn ze veel lichter en sneller dan een VM. Daarmee zijn ze ook veel sneller op te starten en veel makkelijker op grote schaal in te zetten dan een virtuele machine. Een container is idealiter ook een eenheid die je gemakkelijk weggooit en opnieuw opzet zonder data te verliezen: het bevat alleen de uitvoerende onderdelen van de applicatie en maakt verbinding met een database voor de gegevens.

Maar containers moeten wel beheerd kunnen worden om effectief in te zetten in een omgeving. Hiervoor zijn systemen als Docker en Kubernetes in het leven geroepen.

Kubernetes

Kubernetes is een opensourcesysteem waarmee je containerapplicaties kunt beheren, groeperen, of op- of af kunt schalen. Je kunt jouw containers ermee load-balancen, uitrollen of intrekken. Wil je kunnen monitoren of logging gebruiken, dan kan dat ook via Kubernetes. Het is een heel flexibel en gevarieerd systeem dat gebruikers heel veel vrijheid geeft in hoe zij het willen toepassen op hun omgevingen.

Kubernetes werkt in een cluster-opzet. Een cluster bevat een set nodes die de pods, oftewel de container-applicaties bevatten. In die pods kun je zo’n beetje alles kwijt wat je gecontaineriseerd kunt runnen, van simpele applicaties tot complete database-set-ups. Daarnaast bevat elke node de kubelet: een agent waarmee de pods worden aangestuurd, opgestart of afgesloten vanuit de control plane.

Control plane

De control plane op zijn beurt is een managementlaag die de nodes en pods beheert die in het cluster zitten. In een gewoon Kubernetes-cluster moet je altijd rekening houden met minimaal 1 node die gebruikt wordt voor de control plane. Bij TransIP wordt het control plane beheerd door TransIP. Dat houdt in dat je in jouw cluster niet een extra node hoeft te reserveren voor je control plane. Bovendien zorgen wij ervoor dat het blijft draaien en up-to-date blijft.  

Scaling

Waar Kubernetes in uitblinkt, is slimme geautomatiseerde functies inzetten om je cluster mee te laten groeien of krimpen met de vraag naar resources. Zo is er horizontale pod scaling, waarbij er automatisch meer pods in een node gedeployed worden om de werkdruk te verdelen. Dit is heel handig bij systemen waar je niet van tevoren weet hoeveel vraag er naar de applicatie gaat zijn, of bij systemen waarbij je weet dat je piekbelastingmomenten hebt.

Daarnaast kun je verticaal schalen. Bij verticaal schalen worden er meer resources toegewezen aan de pods die al draaien, zonder dat er nieuwe pods opgezet hoeven te worden. Hierbij betaal je dankzij een pay-as-you-go-opzet alleen voor wat je op dat moment gebruikt tegen een uurtarief.

Cloud-native applicaties

En als je cluster dan draait, wat dan? Het antwoord is: wat je maar wilt. Elke applicatie die je als cloudapplicatie kunt runnen, kan in theorie gebruikt worden op een Kubernetes-cluster. Laat je creativiteit dus gerust de vrije loop en experimenteer! Inspiratie voor toepassingen die naadloos werken op jouw Kubernetes-cluster kun je opdoen bij de onafhankelijke Cloud Native Computing Foundation (CNCF).

TransIP Kubernetes

Usecase: Een schaalbaar schoolvoorbeeld

Een Kubernetescluster is uitermate schaalbaar en snel in te zetten naar behoefte. In dit voorbeeld gaan we uit van een middelbare school met een leerlingenbestand van zo’n 1500 kinderen. De leraren van deze school houden behaalde resultaten van hun leerlingen bij in software die op hun eigen server draait. Leerlingen kunnen ook in dit systeem inloggen om behaalde cijfers te bekijken en hun cijferlijsten op te halen. Maar elk kwartaal loopt het systeem tegen capaciteit aan: na de tentamenweek loggen alle leraren tegelijkertijd in om hun resultaten toe te voegen en refreshen leerlingen obsessief hun cijferlijst om te zien hoe hun tentamens gegaan zijn.

Om dit periodieke overbelasten van het systeem tegen te gaan, kan de school kiezen voor een Kubernetes-oplossing. Met meerdere nodes waarop meerdere pods draaien van de software, kan de IT-afdeling makkelijk en snel extra pods bijplaatsen en zo de druk op het platform verminderen. Maar daarnaast is de autoscalingfunctionaliteit in dit geval heel handig: mocht het toch druk zijn op het platform deployt Kubernetes automatisch meer pods om die druk te verdelen. Is de druk van de ketel, dan lost autoscaling dat ook op door overbodige pods weer weg te gooien.

Usecase: redundant WordPress hosten

Redundantie is een groot voordeel van Kubernetes ten opzichte van, bijvoorbeeld, Docker. In dit voorbeeld hebben we het over een klein bedrijf dat WordPress-hosting verkoopt aan zijn klanten. Voor deze kleine man op de markt is het belangrijk dat zijn klanten op hem kunnen vertrouwen. Downtime van de websites is daarbij zeker geen optie. Daarom heeft hij gekozen voor een Kubernetes-cluster als basis.

Het snel kunnen opzetten van een nieuwe WordPress-instantie in een pod is een makkie (zie bijvoorbeeld deze entry op Github). Maar mocht een node ineens uitvallen kan onze WordPress-hoster heel snel nieuwe pods van zijn klanten spawnen op een andere node. Zo hoeven zijn klanten zich geen zorgen te maken om downtime of verdwenen websites. Dankzij PersistentVolume is het ook nog eens zo, dat zelfs de database gewoon kan runnen als pod en veilig ververst of verplaatst kan worden zonder dat de klant data kwijtraakt.

Licht de ankers!

Geïnspireerd geraakt? Spin dan vandaag nog jouw eigen Kubernetes-cluster op. Wil je meer weten over Kubernetes, bekijk dan eens de uitgebreide lijst artikelen in onze Knowledge Base.


Beoordeel dit artikel

Deel dit artikel

Gerelateerde artikelen

Blog overzicht

Auteur: Stefanie Weber

Houdt er als tech-copywriter van om antwoorden te zoeken op de vraag 'maar, hoe dan?' en dat zo uit te leggen dat zelfs haar moeder het zou snappen. Kan in haar vrije tijd haar handen ook niet stilhouden, dus speelt MMO's of knoeit met verf en kwasten.