Kubernetes

Containers (zie ook mijn pagina over Docker) zijn populair in het gebruik omdat ze minder resources gebruiken dan complete Virtuele Machines. Voor elke applicatie kunnen één of meerdere containers gemaakt worden en samen vormen zij de complete applicatie. Denk bijvoorbeeld aan een WordPress website container die samenwerkt met een mariaDB database container.

Hierboven wordt weergegeven hoe de traditionele omgeving van applicaties via een virtuele omgeving uiteindelijk als containers ‘deployed‘ zijn. Duidelijk is het niveau van de containers die gebruik maken van de onderliggende hardware en het OS.

Mocht het complexer worden dan kan de container-orchestrator ‘Kubernetes‘ gebruikt worden. Kubernetes is momenteel dé standaard om containers te beheren en maakt gebruik van clusters om hierin containers te laten ‘draaien’ en managed de schaalbaarheid (en beschikbaarheid) van de applicatie(s).

In vogelvlucht

Kubernetes werkt met ‘Namespaces‘. Elke namespace kun je beschouwen als een verzameling met alle bij elkaar behorende onderdelen, ookwel ‘workloads‘ genoemd. De container met hierin de applicatie, wordt gedefinieerd in ‘pods’. Er kunnen meerdere containers in één pod gebruikt worden en er zijn meestal meerdere pods binnen één namespace aanwezig. Meerdere pods van hetzelfde type worden ‘replica’s‘ genoemd en worden onderhouden met ‘deployments‘. Pods en deployments worden voorzien van één of meerdere ‘labels‘ ter herkenning. Vervolgens kunnen er TCP/UDP-poorten gekoppeld worden naar de ‘buitenkant’ zodat de applicatie bereikbaar is. Deze poorten worden aangegeven met ‘services‘.

Cluster onderdelen

De ‘master‘ is een belangrijk onderdeel van Kubernetes en deze heeft als taak om de efficiëntie van de nodes binnen een cluster te sturen. Dat kan zijn om meerdere pods bij te schakelen bij hoge belasting van het systeem, of deployments op verschillende (cloud) systemen te groeperen voor een hogere (geografische) bereikbaarheid. Zelfs verschillende cloud- en on-premise systemen kunnen hiermee samenwerken voor hoge beschikbaarheid.

De ‘worker‘ nodes bevatten de pods waarin de containers draaien.

Storage

Aangezien Kubenetes zo ontworpen is dat de beschikbare worker-nodes gebruikt worden om pods in te laten ‘draaien’, zal de opslag van een node niet gebruikt kunnen worden om data in op te slaan. Als de pod opnieuw aangemaakt wordt, kan dat namelijk op een andere beschikbare worker-node gebeuren.

Een oplossing is om shared-storage te koppelen aan de cluster via zogenaamde ‘Persistent Storage‘. Zie dit als het koppelen van een harddisk aan de cluster. Via een ‘claim’ kan een (gedeelte van de) storage gebruikt worden door een pod. Hierdoor zal data bewaard blijven als de pod opnieuw gegenereerd wordt. Zie ook NFS Share.


Kubernetes kan op verschillende manieren geïnstalleerd worden:

Daarnaast kun je Kubernetes ook lokaal op je computer installeren met o.a. Minikube of Rancher Desktop.