Server vorbereiten#
System aktualisieren#
apt update && apt upgrade -y && apt install curl -yPorts freigeben#
Wenn eine Firewall aktiv ist, müssen diese Ports offen sein. Für einen einzelnen Node reichen 80 und 443, die anderen brauchst du erst mit mehreren Nodes:
| Port | Protokoll | Wofür |
|---|---|---|
| 80, 443 | TCP | Webdienste über Traefik |
| 6443 | TCP | Kubernetes-API, für kubectl und weitere Nodes |
| 8472 | UDP | Netzwerk zwischen den Nodes (Flannel) |
| 10250 | TCP | Kubelet, für Logs und Metriken |
k3s installieren#
Installationsskript ausführen#
curl -sfL https://get.k3s.io | sh -Das Skript installiert k3s als Systemdienst und startet ihn direkt. Nach ein bis zwei Minuten läuft dein Cluster.
Willst du das Skript vorher lesen, statt es direkt auszuführen, geht das auch:
curl -sfL https://get.k3s.io -o install-k3s.sh
less install-k3s.sh
sh install-k3s.shInstallation prüfen#
k3s kubectl get nodesSteht dein Server dort mit dem Status Ready, hat alles geklappt.
kubectl einrichten#
k3s bringt kubectl direkt mit. Damit du es als normaler Benutzer ohne k3s davor nutzen kannst, kopierst du die Zugangsdatei in dein Home-Verzeichnis:
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
chmod 600 ~/.kube/configDanach funktioniert ganz normal:
kubectl get nodesk3s.yaml enthält vollen Admin-Zugriff auf deinen Cluster. Behandle sie wie ein Passwort und gib sie nicht weiter.Vom eigenen Rechner aus arbeiten#
Willst du den Cluster von deinem Laptop steuern, kopierst du die Datei dorthin nach ~/.kube/config und ersetzt darin 127.0.0.1 durch die IP-Adresse deines Servers. Dafür muss Port 6443 von deinem Rechner aus erreichbar sein, am besten über VPN.
Weitere Nodes hinzufügen#
Für mehr Leistung oder Ausfallsicherheit hängst du weitere Server als Worker an. Auf dem ersten Server liest du zuerst den Token aus:
sudo cat /var/lib/rancher/k3s/server/node-tokenAuf dem neuen Node führst du dann diesen Befehl aus und ersetzt die IP-Adresse und den Token:
curl -sfL https://get.k3s.io | K3S_URL=https://IP-des-ersten-Servers:6443 K3S_TOKEN=dein-token sh -Nach kurzer Zeit taucht der neue Node bei kubectl get nodes auf.
Erste App veröffentlichen#
Deployment und Service anlegen#
kubectl create deployment web --image=nginx
kubectl expose deployment web --port=80Über Traefik erreichbar machen#
Leg eine Datei web-ingress.yaml an und ersetze die Domain durch deine eigene:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web
spec:
rules:
- host: web.deine-domain.de
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80kubectl apply -f web-ingress.yamlZeigt der DNS-Eintrag web.deine-domain.de auf deinen Server, siehst du im Browser die Startseite von Nginx. Zum schnellen Testen ohne Domain geht auch kubectl port-forward svc/web 8080:80 und dann http://localhost:8080.
Weitere Befehle für den Alltag findest du in meiner Übersicht der Kubernetes-Befehle.
k3s aktualisieren#
Für ein Update führst du das Installationsskript einfach noch einmal aus. Es aktualisiert k3s auf die aktuelle stabile Version und behält deine Daten:
curl -sfL https://get.k3s.io | sh -Bei mehreren Nodes aktualisierst du zuerst den Server und danach die Worker, mit demselben Befehl wie beim Hinzufügen.
k3s deinstallieren#
k3s bringt eigene Skripte zum Entfernen mit:
/usr/local/bin/k3s-uninstall.shAuf Worker-Nodes heißt das Skript k3s-agent-uninstall.sh.

