3.5 KiB
3.5 KiB
02 — k3s Installation
Datum: 2026-03-16 Version: v1.34.5+k3s1 Container Runtime: containerd 2.1.5-k3s1
Cluster-Übersicht
| Node | Rolle | IP |
|---|---|---|
| rnk-cp01 | control-plane | 192.168.11.170 |
| rnk-wrk01 | agent (worker) | 192.168.11.171 |
| rnk-wrk02 | agent (worker) | 192.168.11.172 |
Voraussetzungen
- KVM + libvirt installiert (siehe
01-kvm-libvirt.md) - Bridge
br0auf allen Nodes konfiguriert (siehe01-network-bridge.md) - SSH-Zugang von rnk-cp01 zu rnk-wrk01 und rnk-wrk02 ohne Passwort
- Internetverbindung auf allen Nodes
Installation
1. k3s Server auf rnk-cp01
curl -sfL https://get.k3s.io | sh -s - server \
--node-ip=192.168.11.170 \
--tls-san=192.168.11.170 \
--flannel-iface=br0 \
--write-kubeconfig-mode=644
| Flag | Erklärung |
|---|---|
--node-ip |
IP-Adresse die dieser Node im Cluster advertised |
--tls-san |
IP ins TLS-Zertifikat aufnehmen (für externe kubectl-Zugriffe) |
--flannel-iface=br0 |
Flannel CNI nutzt br0 statt des physischen Interfaces |
--write-kubeconfig-mode=644 |
kubeconfig für nicht-root User lesbar |
Hinweis:
--advertise-addrexistiert in k3s v1.34+ nicht mehr. Der korrekte Flag ist--tls-san.
Status prüfen:
sudo systemctl is-active k3s
2. Node-Token auslesen
sudo cat /var/lib/rancher/k3s/server/node-token
Der Token wird für den Agent-Join benötigt.
3. k3s Agent auf rnk-wrk01 und rnk-wrk02
Von rnk-cp01 per SSH, beide Worker parallel:
TOKEN=$(sudo cat /var/lib/rancher/k3s/server/node-token)
# rnk-wrk01
ssh mtkadmin@192.168.11.171 "curl -sfL https://get.k3s.io | \
K3S_URL=https://192.168.11.170:6443 \
K3S_TOKEN='$TOKEN' \
sh -s - agent \
--node-ip=192.168.11.171 \
--flannel-iface=br0" &
# rnk-wrk02
ssh mtkadmin@192.168.11.172 "curl -sfL https://get.k3s.io | \
K3S_URL=https://192.168.11.170:6443 \
K3S_TOKEN='$TOKEN' \
sh -s - agent \
--node-ip=192.168.11.172 \
--flannel-iface=br0" &
wait
Verifikation
kubectl get nodes -o wide
Erwartete Ausgabe:
NAME STATUS ROLES AGE VERSION INTERNAL-IP
rnk-cp01 Ready control-plane ... v1.34.5+k3s1 192.168.11.170
rnk-wrk01 Ready <none> ... v1.34.5+k3s1 192.168.11.171
rnk-wrk02 Ready <none> ... v1.34.5+k3s1 192.168.11.172
Kubeconfig
Die kubeconfig liegt auf rnk-cp01 unter:
/etc/rancher/k3s/k3s.yaml
Für externen Zugriff (z.B. vom Laptop) kopieren und Server-IP anpassen:
scp mtkadmin@192.168.11.170:/etc/rancher/k3s/k3s.yaml ~/.kube/config
sed -i 's/127.0.0.1/192.168.11.170/' ~/.kube/config
Nützliche Befehle
# Alle Nodes anzeigen
kubectl get nodes -o wide
# System-Pods prüfen
kubectl get pods -n kube-system
# k3s Logs (Server)
sudo journalctl -u k3s -f
# k3s Logs (Agent)
sudo journalctl -u k3s-agent -f
# k3s deinstallieren (Server)
sudo k3s-uninstall.sh
# k3s deinstallieren (Agent)
sudo k3s-agent-uninstall.sh
Ergebnis
Alle drei Nodes sind im Status Ready:
NAME STATUS ROLES VERSION INTERNAL-IP CONTAINER-RUNTIME
rnk-cp01 Ready control-plane v1.34.5+k3s1 192.168.11.170 containerd://2.1.5-k3s1
rnk-wrk01 Ready <none> v1.34.5+k3s1 192.168.11.171 containerd://2.1.5-k3s1
rnk-wrk02 Ready <none> v1.34.5+k3s1 192.168.11.172 containerd://2.1.5-k3s1