Doel
In deze eerste oplevering wil ik volgende zaken realiseren:
- installeer en maak kennis met kubernetes
- deploy bestaande zelfgemaakte applicaties in een kubernetes cluster
- voeg monitoring toe aan kubernetes
Resultaat
1 - Installeer en bestudeer Kubernetes
Om de portabiliteit, schaalbaarheid en beschikbaarheid van mijn programma’s te verhogen,
ga ik kubernetes als software-platform gebruiken voor container orchestration.
Portabiliteit betekent dat kubernetes zowat op alle linux distros kan geïnstalleerd en gebruikt worden,
om applicaties schaalbaar en met hoge beschikbaarheid te deployen.
Kubernetes is hierdoor zowat de standaard geworden in bedrijven en voor Cloud providers.
Als eerste heb de architectuur en basiswerking van Kubernetes geleerd via een online cursus.
Daarna heb ik verschillende kubernetes distros vergeleken, en “K3s/K3d” als lichtgewicht implementatie gekozen
(vs standard kubernetes K8s, Openshift, Talos Linux, Minikube, Kind, Microk8s).
Om kubernetes te installeren, diende ik hardware en virtuele machines te voorzien.
Daarna diende ik hierop de gewenste cluster architectuur en namespaces uit te bouwen.
Ik creeerde volgende 3 kubernetes-omgevingen:
- kubernetes cluster “local-devapp” voor local development en exploratie:
op mijn development pc/laptop installeerde ik “Rancher Desktop”;
ik maakte gebruik van een one-node-cluster met K3s en een multi-node-cluster met K3d,
die dynamisch gecreeerd en verwijderd worden wanneer nodig - kubernetes cluster “home-devdep” voor centrale app development en deployment tools:
ik maakte hiervoor gebruik van een one-node-cluster met K3s,
en kocht hiervoor een refurbished business-grade machine aan;
later kan deze cluster uitgebreid worden met extra nodes - kubernetes cluster “home-prodapp” voor in productie gedeployde applicaties:
ik maakte hiervoor gebruik van een one-node-cluster met K3s,
en kocht hiervoor een refurbished business-grade machine aan;
later zal deze cluster uitgebreid worden met extra nodes
De aankoopprijs van deze 2 machines moest binnen mijn jaarlijks budget van 500 eur vallen.
Ik kocht volgende 2 gereviseerde business-grade mini pc’s met een laag energieverbruik,
en installeerde hierop K3s Kubernetes:
HP EliteDesk 800 G5 USFF - Intel Core i5-9e Gen (6 cores/6 threads) - 16 GB DDR4 SDRAM - 256 GB SSD
2 - Bestudeer application deployment in Kubernetes
Ik leerde als eerste om applicaties te deployen en gebruiken op de “home-prodapp” kubernetes cluster.
Kubernetes geeft ondersteuning om de schaalbaarheid en beschikbaarheid te verbeteren in 3 belangrijke domeinen:
- computing resources:
deze worden “Workloads” genoemd in Kubernetes;
kubernetes specifieert “Long-Running / Continuous” workload types (DaemonSet, Deployment, StatefulSet),
en “Batch / Scheduled” workload types (Jobs, CronJobs);
in deze post zullen we enkel “DaemonSet”, “Deployment” en “StatefulSet” als workload types bekijken - storage resources:
deze worden “Volumes” genoemd in Kubernetes;
kubernetes specifieert vele types die opgedeeld worden in “Ephemeral & Temporary”, “Node-Local” en “Persistent & Networked” volume types;
in deze post zullen we enkel “emptyDir” & “configMap” & “secret” als Ephemeral,
“hostPath” als Node-Local en “nfs” & “csi” (Container Storage Interface) als Persistent volume types bekijken - networking resources:
deze worden “Services, Load Balancing, and Networking” genoemd in Kubernetes;
kubernetes specifieert “ClusterIP” (default), “NodePort”, “LoadBalancer”, “ExternalName” en “HeadlessService” als service types;
in deze post zullen we enkel “NodePort” en “LoadBalancer” als service types bekijken
Voor de studie van deze kubernetes support voor applicaties, creeerde ik 2 namespaces naast “default” in de “home-prodapp” cluster:
- “ops” namespace:
hierin zullen app en infra monitoring tools geinstalleerd worden - “demo” namespace:
hierin zullen de reeds bestaande, zelf gemaakte “demo_hello2” en “demo_todo2” app opnieuw geinstalleerd worden
