Skip to content

k3d

k3d ist ein Tool, das die einfache Bereitstellung von K3s (einer leichtgewichtigen Kubernetes-Distribution von Rancher Labs) in Docker-Containern ermöglicht. Mit k3d können Benutzer lokal Kubernetes-Cluster aufsetzen, ohne aufwendige Setups, was es ideal für Entwicklungs- und Testumgebungen macht. Es stellt eine schnelle und ressourcenschonende Möglichkeit dar, Kubernetes lokal zu verwenden.

Vorteile von k3d:

  • Leichtgewichtig: Da K3s weniger Ressourcen benötigt, läuft es gut auf Entwicklungsmaschinen.
  • Schnelles Setup: Ein K3s-Cluster kann innerhalb von Sekunden erstellt und gelöscht werden.
  • Docker-Integration: Da k3d die Container-Runtime Docker verwendet, lässt es sich nahtlos mit bestehenden Docker-Workflows integrieren.

Beispiele für k3d-Befehle:

  • k3d cluster create <name> – Erstellt einen neuen K3s-Cluster.
  • k3d cluster delete <name> – Löscht einen bestehenden K3s-Cluster.
  • k3d cluster list – Zeigt alle aktuell laufenden K3s-Cluster an.

Mit k3d kann man Kubernetes-Cluster für lokale Tests und Entwicklungen schnell erstellen, ohne komplexe Cloud-Setups oder Virtualisierungen, was es ideal für Entwickler macht, die Kubernetes-Anwendungen schnell testen möchten.

Installation

Linux

Installation
1
curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash

Windows

Installation
1
winget install k3d.k3d

Commands

cluster

Cluster mit 1 Controllern und 3 Agents erstellen
1
k3d cluster create demo --api-port 6550 -p "80:80@loadbalancer" --agents 3
Prüfen ob ich mit dem k3d-demo Cluster verbunden bin
1
kubectl config current-context
Prüfen welche Nodes auf dem k3d-demo Cluster vorhanden sind
1
kubectl get nodes

Um sicherzustellen, dass bestimmte Nodes in einem Kubernetes-Cluster keine allgemeinen Workloads erhalten, können sogenannte Taints verwendet werden. Taints verhindern, dass Pods ohne entsprechende Toleration auf diesen Nodes geplant werden. Dies ist nützlich, um beispielsweise Master-Nodes für spezielle Aufgaben zu reservieren.

NoSchedule sorgt dafür, dass neue Pods auf diesen Nodes nur geplant werden, wenn sie eine passende Toleration für den Taint besitzen. So bleiben die Nodes für spezifische Rollen reserviert und stehen nicht für allgemeine Workloads zur Verfügung.

Nodes mit einem NoSchedule-Taint versehen
1
kubectl taint nodes k3d-demo-server-0 node-role.kubernetes.io/master=:NoSchedule
Cluster Liste anzeigen
1
k3d cluster list
Cluster stoppen
1
k3d cluster stop demo
Cluster starten
1
k3d cluster start demo
Cluster löschen
1
k3d cluster delete demo

kubeconfig

Die Kubeconfig wird automatisch in deine aktuelle Kubeconfig gemerged.
Wenn der Cluster gelöscht wird, wird die Kubeconfig des Clusters wieder entfernt.

Mit dem folgenden Befehl kannst du die aktuelle Kubeconfig des Clusters ausgeben.
So hast du die Möglichkeit, sie als eigenständige Datei zu speichern und zu verwenden.

kubeconfig für den Cluster erhalten
1
k3d kubeconfig get demo