Was ist K3s?
K3s ist eine hoch verfügbare, zertifizierte Kubernetes-Distribution, die für den Betrieb auf kleinen Geräten und in ressourcenbeschränkten Umgebungen entwickelt wurde. Die Binärdatei ist nur ~60 MB groß und benötigt lediglich 512 MB RAM und eine CPU – ideal für einen VPS mit 2 GB RAM. K3s ersetzt etcd durch SQLite (optional etcd für HA), integriert einen eigenen Ingress-Controller (Traefik), eine eigene Storage-Lösung (Local Path Provisioner) und vereinfacht viele Kubernetes-Konzepte, ohne an der API-Kompatibilität zu sparen.
Voraussetzungen
Bevor es losgeht, benötigst du:
- VPS mit mindestens 1 GB RAM, 2 CPUs und 20 GB SSD (empfohlen: 2 GB RAM, 2 vCPUs)
- Ubuntu 22.04 oder 24.04 LTS (oder Debian 12)
- Root-Zugriff per SSH
- Eine Domain, die auf die IP deines Servers zeigt (optional, aber empfohlen)
- Firewall: Ports 6443 (Kubernetes API), 80/443 (Ingress) und 22 (SSH) freigeben
K3s in 5 Minuten installieren
Die Installation von K3s ist denkbar einfach – ein einziger Befehl reicht:
curl -sfL https://get.k3s.io | sh -
Nach etwa 60 Sekunden läuft dein Kubernetes-Cluster. Überprüfe den Status:
sudo k3s kubectl get nodes
sudo k3s kubectl get pods -A
Standardmäßig installiert K3s bereits Traefik als Ingress-Controller, CoreDNS für die interne Namensauflösung, den Local Path Provisioner für Storage und HelmChart CRD für Helm-Integration. Du kannst diese Komponenten bei Bedarf deaktivieren – zum Beispiel mit --disable traefik.
Kubectl einrichten (optional)
Für eine komfortablere Steuerung installierst du kubectl und kopierst die Kubeconfig:
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER ~/.kube/config
export KUBECONFIG=~/.kube/config
Jetzt kannst du kubectl direkt verwenden: kubectl get nodes.
Erste Anwendung deployen
Testen wir den Cluster mit einer einfachen Nginx-Anwendung:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=ClusterIP
kubectl create ingress nginx --rule="nginx.deinedomain.de/*=nginx:80"
Nach wenigen Sekunden ist die Anwendung über die Domain erreichbar – sofern der DNS-Eintrag gesetzt ist. Du kannst auch LoadBalancer-Services verwenden, wenn du K3s mit dem integrierten Service-LB (Klipper) betreibst.
Storage & Persistente Daten
K3s bringt den Local Path Provisioner mit, der Persistent Volumes auf dem lokalen Dateisystem des Nodes bereitstellt. Für Produktionsumgebungen solltest du jedoch eine verteilte Storage-Lösung wie Longhorn (ebenfalls von Rancher) oder Rook/Ceph in Betracht ziehen:
| Storage-Lösung | Typ | Vorteile | Nachteile |
|---|---|---|---|
| Local Path Provisioner | Lokal | Einfach, schnell, vorinstalliert | Kein Multi-Node, kein Backup |
| Longhorn | Verteilt | Replikation, Snapshots, Multi-Node | Ressourcenintensiver |
| Rook/Ceph | Verteilt | Sehr ausgereift, viele Features | Komplexe Einrichtung |
Wichtige K3s-Konfigurationen
| Konfiguration | Option | Beschreibung |
|---|---|---|
| Installation | curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik" sh - | Traefik deaktivieren |
| Server-Start | --write-kubeconfig-mode 644 | Kubeconfig ohne sudo nutzen |
| Node-Token | /var/lib/rancher/k3s/server/node-token | Token für Agent-Node-Installation |
| Agent install | curl -sfL https://get.k3s.io | K3S_URL=https://server:6443 K3S_TOKEN=... sh - | Weitere Nodes hinzufügen |
| Docker statt containerd | --docker | Docker als Container-Runtime |
Multi-Node-Cluster aufbauen
Ein großer Vorteil von K3s: Du kannst ganz einfach einen Multi-Node-Cluster aufsetzen. Installiere auf dem zweiten VPS den K3s-Agenten und verbinde ihn mit dem Server:
curl -sfL https://get.k3s.io | K3S_URL=https://<SERVER-IP>:6443 K3S_TOKEN=<NODE-TOKEN> sh -
Der Node-Token befindet sich auf dem Server unter /var/lib/rancher/k3s/server/node-token. Nach der Verbindung kannst du mit kubectl get nodes beide Nodes sehen. Für Hochverfügbarkeit benötigst du mindestens 3 Server-Nodes mit einer externen etcd-Datenbank.
Monitoring & Management
Zur Überwachung deines K3s-Clusters eignen sich:
- K9s: Terminal-basiertes Kubernetes-UI – extrem nützlich für den Alltag
- Rancher Dashboard: Webbasiertes Management für mehrere Cluster
- Prometheus & Grafana: Überwachung mit kube-prometheus-stack via Helm
Fazit
K3s ist die ideale Kubernetes-Distribution für den Betrieb auf einem VPS. Die Installation ist in wenigen Minuten erledigt, der Ressourcenverbrauch ist minimal und die Kompatibilität mit der Kubernetes-API ist vollständig gegeben. Egal, ob du eine kleine Webanwendung, eine Microservices-Architektur oder eine CI/CD-Umgebung betreiben möchtest – K3s macht Kubernetes auch auf einem günstigen VPS zugänglich. Probiere es aus: Starte deinen ersten Single-Node-Cluster und erweitere ihn nach Bedarf zu einem hochverfügbaren Multi-Node-Setup.