Initial: Add all homelab manifests
This commit is contained in:
154
docs/02-k3s-installation.md
Normal file
154
docs/02-k3s-installation.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# 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 `br0` auf allen Nodes konfiguriert (siehe `01-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
|
||||
|
||||
```bash
|
||||
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-addr` existiert in k3s v1.34+ nicht mehr. Der korrekte Flag ist `--tls-san`.
|
||||
|
||||
**Status prüfen:**
|
||||
```bash
|
||||
sudo systemctl is-active k3s
|
||||
```
|
||||
|
||||
### 2. Node-Token auslesen
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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:
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user