Kennisartikel: Kubernetes

Artikel
SWIS
16 januari 2023

SWIS stapt in februari volledig over van (traditionele) virtuele hosting naar een Kubernetes oplossing. Wat is Kubernetes precies en waarom vinden wij het bij SWIS dé perfecte oplossing om jouw site of applicatie op de hosten? In dit artikel leggen we haarfijn uit wat Kubernetes is.

Wat is Kubernetes?

Kubernetes is een open-source platform voor het beheren van container-gebaseerde applicaties. Kubernetes is begonnen als platform waar Google op draait met codenaam ‘Borg’. Het is jarenlang intern getest bij Google in de context van tienduizenden servers en alle problemen die daarbij komen kijken. In 2014 is het platform genaamd “Borg” uitgebracht als het open-source project Kubernetes. Het platform wordt momenteel onderhouden door de Cloud Native Computing Foundation (CNCF).

Kubernetes wordt ook wel K8s genoemd of bij ons op kantoor afgekort naar: "Kube".
 

SWIS stapt over naar Kubernetes
Joris Meijer - Software Architect @ SWIS

De kracht van open source

Al onze (technische) oplossingen zijn gebaseerd op open standaarden. Door het gebruik van opensource-software zit je niet vast aan één leverancier (vendor lock-in) en is het dus mogelijk om je website makkelijk te verhuizen naar een andere leverancier mocht je hiervoor kiezen. SWIS kiest daarom heel bewust voor opensource-oplossingen, zo ook voor onze hosting. Het Kubernetes platform is volledig open source.

Als je Kubernetes zou uit moeten leggen aan een kind.

The Illustrated Children's Guide to Kubernetes
Externe video URL

Ideaal voor het hosten
en beheren van microservices

Kubernetes is een modulair platform. Er kunnen bijvoorbeeld meerdere websites op draaien, die ondersteund worden door meerdere microservices (bijvoorbeeld voor caching) die individueel geschaald kunnen worden. Je bouwt als het ware een lego-bouwerk van microservices. De lego steentjes zijn de containers in een pod, alle lego steentjes (= pods) bij elkaar vormen het robuuste lego bouwwerk.

Microservice?
Wij kunnen je uitleggen wat microservices zijn en hoe je ze gebruikt. Maar True, onze hosting-partner, heeft daar al een supergoede en duidelijke blog over geschreven. 


Hoe ziet de technische infrastructuur er uit?

De technische, onderliggende, infrastructuur van Kubernetes bestaat uit grofweg 4 verschillende componenten: nodes, pods, containers en services. Alle 4 zijn nodig om een (micro)service te laten werken. Het is een samenspel tussen de verschillende componenten. Doordat Kubernetes op deze manier is opgebouwd is het platform enorm schaalbaar. Heb je meer resources nodig, dan kun je "gemakkelijk" een nieuw component bij plaatsen voor extra power.

Pods, containers, nodes en services; het verschil

Zoals gezegd in Kubernetes zijn pods, containers, nodes en services de belangrijkste componenten die samenwerken om applicaties te hosten en te beheren. Maar wat is het verschil tussen deze componenten?

Kubernetes diagram infrastructure

Nodes

Nodes zijn fysieke of virtuele machines die de pods hosten. Elke node bevat de noodzakelijke software, zoals de container runtime en de kubelet, om pods uit te voeren. Nodes communiceren met de Kubernetes-master om te rapporteren welke pods zij hosten en welke resources zij beschikbaar hebben. Meerdere nodes bij elkaar vormen tezamen het Kubernetes cluster.

Pods

Pods zijn de kleinste en meest fundamentele eenheid in Kubernetes. Ze bevatten één of meer containers. Pods zijn ook verantwoordelijk voor het delen van resources zoals CPU en geheugen. Zij zijn de bouwstenen van een Kubernetes-cluster en zijn essentieel voor het uitvoeren van containers.

Containers

Containers in Kubernetes zijn verpakte software met alle benodigde afhankelijkheden erin, waardoor de applicatie op elke gewenste omgeving kan worden uitgevoerd zonder zorgen te maken over afhankelijkheden. Deze containers worden gebruikt om applicaties te implementeren, te schalen en te beheren binnen Kubernetes. De containers delen dezelfde IP-adres- en netwerkcontext.

Services

Services zijn logische abstracties die toegang bieden tot pods. Ze zorgen ervoor dat deze toegankelijk zijn voor andere componenten van de applicatie. Services kunnen ook verkeer verdelen over meerdere pods en bieden een manier om de beschikbaarheid van de applicatie te verhogen. Dit komt de schaalbaarheid van de applicatie ten goede.


Het grootste voordeel: Schaalbaarheid

Een van de grootste voordelen van Kubernetes is de mogelijkheid om applicaties eenvoudig te schalen. Dit kan zowel horizontaal als verticaal worden gedaan, afhankelijk van de specifieke vereisten van de applicatie. Kubernetes biedt ook een aantal geavanceerde functies voor het beheren van de beschikbaarheid van applicaties, zoals het automatisch herstellen van pods en het automatisch verdelen van verkeer over verschillende pods.

Horizontaal vs. verticaal schalen

In Kubernetes is horizontale schaling het toevoegen van meer nodes aan een cluster om de capaciteit te vergroten. Hierdoor kunnen meer pods worden uitgevoerd en kan de verwerking van meer verkeer worden aangepakt. Dit kan, zolang er genoeg ruimte is op de nodes, automatisch worden gedaan door Kubernetes door middel van de automatische schalingsregels die zijn geconfigureerd. Horizontale schaling is een efficiënte manier om de capaciteit te verhogen zonder dat er grote veranderingen nodig zijn in de applicatie zelf.

Verticale schaling daarentegen gaat over het toevoegen van meer resources aan een bestaande node, zoals meer CPU of geheugen. Dit kan handmatig worden gedaan door een beheerder of automatisch door Kubernetes. Verticale schaling kan een snellere oplossing zijn wanneer er specifieke knelpunten zijn in de resources van een node, zoals een specifieke pod die veel CPU of geheugen gebruikt. Maar het kan ook leiden tot een grotere kostenpost in vergelijking met horizontale schaling, aangezien het toevoegen van resources aan een node vaak meer middelen vergt.

Horizontaal vs verticaal schalen


Nadelen van Kubernetes

Kubernetes kent vele voordelen, maar er kleven ook zeker nadelen aan het gebruik van het platform. De nadelen ontstaan voornamelijk wanneer je schaalt naar grote en complexere infrastructuur en services. Echter de nadelen van het gebruik van Kubernetes wegen voor ons niet op tegen de tal van voordelen die Kubernetes biedt.

Open configuratie-instellingen

  • Complexiteit: Kubernetes heeft veel configuratie-opties en kan complex zijn om te implementeren en te beheren.
  • Leercurve: Er is een stevige leercurve voor het begrijpen en beheren van Kubernetes-clusters.
  • Schaalbaarheid: Kubernetes kan schalen tot grote omvang, maar dit kan leiden tot uitdagingen bij het beheren van de infrastructuur en de configuratie.
  • Netwerkbandbreedte: Kubernetes-clusters kunnen grote hoeveelheden netwerkbandbreedte gebruiken, wat kan leiden tot prestatieproblemen.
  • Opslag: Door de schaalbare aard van Kubernetes, zijn er een aantal specifieke eisen voor opslag, waardoor het moeilijk kan zijn om te integreren met bestaande opslagsystemen.
  • Security: Kubernetes-clusters kunnen gevoelig zijn voor beveiligingsproblemen als ze niet goed worden beheerd en geconfigureerd.

SWIS stapt over naar Kubernetes

In februari maken we bij SWIS de overstap naar Kubernetes. We migreren volgende maand al onze websites naar het opensource-platform. Een aantal sites draaien al op Kubernetes en daar behalen we nu al grote snelheidswinst.

Onze partner True heeft een gestandaardiseerd Kubernetes platform opgezet waar zij een groot aantal klanten op hebben draaien. Vorig jaar hebben we de inrichting afgerond en gewerkt aan de stappen die nodig zijn voor de migratie.

De migraties zijn geautomatiseerd. We hebben een set van templates ontwikkeld waarmee wij containers bouwen voor jouw site en die van onze andere klanten. Deze templates gebruiken we sinds juni vorig jaar om containers te bouwen en uit te rollen naar een nieuwe acceptatieomgeving. Dit gaat onderhand zonder een enkel probleem.

We draaien nu al in productie

Sinds afgelopen zomer draaien een aantal sites al op productie, waaronder onze deze website, swis.nl. We zien nu al dat we naast flexibiliteit, potentieel grote snelheidswinst kunnen behalen.