RTC
nl en
🌟Installeer en gebruik Kubernetes
[ Nog niet afgewerkt ]
kubernetes

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

K3s

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).

K3s

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
HP EliteDesk

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

K8s Workloads

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

Under construction