Kubernetes 101

NB In 2024 gaat deze les NIET door, en zit onderstaand huiswerk bij workshop Alliander van de maandag erop en de daarin niet behandelde theorie uit deze les behandelen we in de Kubernetes 102 les de dinsdag erop.

Deze les kijken we naar de 'Kubernetes architectuur', en alle componenten van Kubernetes. Formeel Kubernetes 'resources' genoemd, zoals Cluster, Node etc. De les begint echter met een recap van de vorige les en uitstapje over semantic versioning. En hieronder eerst het voorbereidende huiswerk.

Huiswerk

Doe het volgende huiswerk. Dit zijn 2 stukken documentatie over 'orchestration' van Docker en 2 korte opdrachten die hierop doorgaan:

  1. Lees de Docker: Orchestration, get started... documentatie en zet lokaal Kubernetes aan in Docker Desktop volgens de instructie (je hoeft NIET Docker Stack aan te zetten, dat is deprecated)
  2. Bekijk de 1e 12 minuten van deze presentatie van Edwin van Wijk (medewerker InfoSupport).
    • Als je liever leest dan video's kijkt neem de onderdelen van de 'overview' van de Kubernetes docs op kubernetes.io door,
    • Vanaf 2:11 begint het stuk over Kubernetes, na een intro over Docker, maar vanaf het begin kijken is wellicht wel zo relaxed
    • Zorg dat je ieder geval de concepten Pods, Deployments en Services duidelijk hebt. Als de video hiervoor te kort/high level is; lees dan de kubernetes docs, of er is ook deze wat uitgebreidere versie om ook intro te krijgen in Pitstop en vergelijking K8S en Docker compose (vanaf ca. 6:00 tot ergens 30 a 40 minuten. Je kunt sowieso stoppen als Edwin Service Mesh gaat behandelen (dat zou mooi onderzoeksonderwerp zijn voor week erna, als je dit interessant vindt).
    • De Kube proxy zorgt dat een pod via network bereikt kan worden en Kubernetes higher level concepten als een NodePort kan realiseren.

A. Neem Figuur 1 voor jezelf op papier over, en breidt deze tekening met met concepten Cluster, Nodes en Pods uit met de overige Kubernetes resource types. Voeg hierin ook de ReplicaSet toe en lees hiervoor de volgende bron over ReplicaSets op website bmc.com.

- Merk op dat in deze overview de *Kubelet* voorkomt i.p.v. een pod. Een Kubelet is te zien als 'de Ops kant' van een Pod. Een Kubelet is een daemon programma dat draait op een server en van de server een K8S node maakt. Meestal gaat deze deel uitmaken van de *data plane* zodat de K8S *control plane* node(s) hier een Pod kan gaan draaien. Vanuit de 'Dev' kant heb je liever de pod als abstractie, dan kun je dit 'extra [niveau van indirectie](https://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering)' negeren. Maar zeker een mogelijk onderzoek in week 6 om onder de moterkap te kijken naar schalingsmogelijkheden van pods of de Ops side van Nodes:
  - Horizontal Pod Autoscaling *HPA)
  - Hoe de kubelet een PodSpec te sturen.
  - Hoe een Kubelet meer dan één pod beheren, zogenaamde 'side car pods'

Diagram of a Kubernetes cluster

Figuur 1: Diagram van een Kubernetes cluster.

B. Kijk naar Figuur 2 en klik er zo nodig op voor een grotere versie.

  • Maak een schema/lijstje met opdeling van de Kubernetes commands's in de 'imperatieve' en 'declaratieve' commando's.
  • En doe kort onderzoek naar de achtergrond hiernaar. Stel bv. ChatGPT een vraag hierover, en valideer wat je terug krijgt kort door te googlen naar andere bronnen.
  • Bijvoorbeeld een relevante stackoverflow post.
K8S: Imperatieve vs declarative

Figuur 2: Kubernetes: imperatieve vs declaratieve commando's in Kubernetes

Kubernetes Architecture

Figuur 3 geeft weer een beeld van de K8S resources in de K8S architectuur.

Kubernetes resources

Figuur 3: Kubernetes Resources

Dit zijn er best veel, dus staan we er even bij stil. Gelukkig waren de lessen over Docker (van vorige week) wel een springplank voor veel concepten. Probeer voor je zelf alle objecten op te halen en op te schrijven. Highlight hieronder de tekst om antwoord zichtbaar te maken.

  • Cluster?
  • Node
  • Service
  • Deployment
  • ReplicaSet
  • Pod
  • Container?
  • Bonus 1: Data plane vs control plane
  • Bonus 2: K8S Client, K8S API?, ...
  • Bonus 3: Taints vs tolerations

...

K8S architectuur in Mermaid klassendiagram

Figuur 3: (Een deel van) ChatGPT 4's poging tot een overzicht als Mermaid klassediagram.

Quiz

Test je '101 kennis' over Kubernetes met deze korte multiple choice quiz:

Leerdoelen

  • Je kunt uitleggen wat Kubernetes is en dat je het gebruikt voor containerorchestratie.
  • Je kent het onderscheid in Kubernetes tussen control plane en data plane.
  • Je kunt het verschil uitleggen tussen de node types binnen Kubernetes (master en worker nodes) en hun rol binnen de cluster.
  • Je kent Kubernetes resources zoals Pods, ReplicaSets en Deployments en kunt beschrijven hoe deze met elkaar verbonden zijn en welke functie ze vervullen.
  • Je herkent de voordelen van declaratieve versus imperatieve Kubernetes commando's en kunt uitleggen hoe je deze toepast in verschillende scenario's.
Last change: 2025-01-13