Einrichten eines Single-Node Kubernetes-Clusters auf Debian

Kubernetes ist eine leistungsstarke Plattform zur Verwaltung von containerisierten Anwendungen und legt den Grundstein für viele Cloud-Native Anwendungen. In dieser Anleitung zeige ich dir, wie du ein Single-Node Kubernetes-Cluster auf Debian einrichtest, ideal für deine private Spielwiese.

Voraussetzungen

Bevor wir beginnen, stelle sicher, dass du Folgendes hast:

  1. Debian 12 (Bookworm)
  2. Root-Zugriff
  3. Mindestens 2 GB RAM und 2 CPU-Cores

Schritt 1: System vorbereiten

1.1 System aktualisieren

Führe eine Aktualisierung deines Systems durch:

sudo apt update
sudo apt upgrade -y

1.2 Swap deaktivieren

Der Swap muss für Kubernetes zwingend deaktiviert werden:

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

1.3 Hostnamen konfigurieren

Setze einen Hostnamen für deine Maschine:

sudo hostnamectl set-hostname my-k8s-master

Bearbeite die /etc/hosts Datei, um den Hostnamen korrekt aufzulösen:

sudo nano /etc/hosts

Füge die folgende Zeile hinzu:

127.0.0.1 my-k8s-master

Schritt 2: containerd installieren

2.1 Abhängigkeiten installieren

Installiere die erforderlichen Pakete:

sudo apt update sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common

2.2 containerd installieren

Füge das Docker-Repository hinzu und installiere containerd:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" sudo apt update sudo apt install -y containerd.io

2.3 containerd konfigurieren

Erstelle die Standardkonfiguration für containerd:

sudo mkdir -p /etc/containerd sudo containerd config default | sudo tee /etc/containerd/config.toml

Starte und aktiviere containerd:

sudo systemctl restart containerd
sudo systemctl enable containerd

Schritt 3: Kubernetes installieren

3.1 Kubernetes-Repository hinzufügen

Füge das Kubernetes-Repository hinzu:

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo bash -c 'cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF'

3.2 Kubernetes-Pakete installieren

Installiere kubeadm, kubelet und kubectl:

sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl

Schritt 4: Kubernetes-Cluster einrichten

4.1 Master-Node initialisieren

Initialisiere den Kubernetes-Cluster auf deinem Single-Node, falls das Subnet 192.168.0.0/24 bei dir in Verwendung sein sollte, wähle ein anderes:

sudo kubeadm init --pod-network-cidr=192.168.0.0/24 --cri-socket /run/containerd/containerd.sock

Nach Abschluss des Befehls, siehst du eine Ausgabe mit Anweisungen, wie du kubectl für den nicht-root Benutzer konfigurierst. Führe diese Befehle aus:

mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

4.2 Netzwerk-Plugin installieren

Installiere ein Netzwerk-Plugin, wie z.B. Calico:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

4.3 Master-Node als Worker konfigurieren

Da wir einen Single-Node-Cluster einrichten, müssen wir den Master-Node auch als Worker-Node konfigurieren, damit Pods darauf ausgeführt werden können:

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

Schritt 5: Cluster überprüfen

Überprüfe den Status des Nodes:

kubectl get nodes

Du solltest deinen einzigen Node in der Liste sehen, und er sollte im Status „Ready“ sein.
Nun ist Dein Single Node Cluster bereit um einen Pod, Service oder Deployments zu erstellen.

Schritt 6: Bereitstellung und Exposition einer Testanwendung (nginx)

Erstellen eines nginx Deployments:

kubectl create deployment nginx --image=nginx

Skalieren des Deployments auf 3 Replikate:

kubectl scale deployment/nginx --replicas=3

Erstellen eines Services, um nginx über das Netzwerk zugänglich zu machen:

kubectl expose deployment nginx --port=80 --type=NodePort

Überprüfen der erstellten Ressourcen:

kubectl get pods
kubectl get deployments
kubectl get services

Zugriff auf die nginx-Anwendung:
Finde den NodePort heraus, der für den nginx-Service zugewiesen wurde:

kubectl get service nginx

Suche die Zeile, die etwa so aussieht:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 10.96.0.1 <none> 80:32000/TCP 10m

In diesem Beispiel ist der zugewiesene NodePort 32000. Du kannst nun auf die nginx-Anwendung zugreifen, indem du die IP-Adresse eines deiner Knoten und den NodePort im Browser aufrufst

Fazit

Im Rahmen dieses Blogbeitrags habe ich zum ersten Mal ein Kubernetes-Cluster aufgesetzt. Dabei gab es einiges an Arbeit und Herausforderungen, insbesondere im Zusammenhang mit dem Netzwerk. Trotz dieser Herausforderungen konnten ich erfolgreich ein Test-Deployment (nginx) erstellen und über das Netzwerk zugänglich machen.

Nun wünsche ich euch viel Spass beim Experimentieren mit eurem eigenen Kubernetes-Cluster!

Beitrag teilen

Tobias Meier

Tobias Meier bloggt aus dem Unterricht CAS Cloud and Platfform Manager.

Alle Beiträge ansehen von Tobias Meier →

Schreibe einen Kommentar