Kurs › Folge 04
Die Hardware: was du wirklich brauchst
Mindestanforderungen, Netzplan und die Alternative in virtuellen Maschinen — mein Aufbau ist nur ein Beispiel.
Das Video zu dieser Folge ist noch nicht veröffentlicht. Die Notizen stehen trotzdem schon hier.
Was du danach kannst
- die Mindestanforderungen fuer einen Knoten einschaetzen — echte Rechner wie virtuelle
- feste Adressen und eindeutige Namen sauber vergeben
- erklaeren, warum nur die Control Plane eine schnelle Platte braucht
- Maschinen aus der Ferne finden, aufwecken und herunterfahren, ohne davorzustehen
Was ein Knoten wirklich braucht
| Control Plane | Worker | |
|---|---|---|
| CPU-Kerne | 2 (kubeadm bricht darunter ab) | 2 |
| RAM | 4 GB, angenehm ab 8 | 4 GB |
| Platte | SSD — nicht verhandelbar | egal, SSD ist netter |
| Netz | Gigabit über Kabel | Gigabit über Kabel |
Das ist keine Empfehlung für gute Ausstattung, sondern die Untergrenze, ab der es überhaupt läuft. Mein eigenes Labor liegt genau darauf: ausrangierte Bürorechner von 2010 mit zwei Kernen und vier Gigabyte.
Der Vorteil dieser Enge: Was hier läuft, läuft überall. Und die Folgen über Requests, Limits und Eviction werden ehrlicher als jedes ausgedachte Beispiel — der Speicher ist wirklich knapp.
Die eine Komponente, bei der man nicht spart
Die Platte der Control Plane. Der Grund steht in Folge 3: etcd zwingt jede
Änderung mit fsync auf das Medium, bevor sie als erledigt gilt.
| Medium | fsync |
|---|---|
| Festplatte 7200 U/min | 5–15 ms |
| SATA-SSD | 0,1–1 ms |
| NVMe | 0,02–0,1 ms |
Der Sprung von der Festplatte zur SSD ist gewaltig. Der von SATA-SSD zu NVMe ist für ein Labor bedeutungslos. Eine gebrauchte SSD für 25 € reicht.
Dieselbe Übung in virtuellen Maschinen
Du brauchst keine drei Rechner. Drei bis vier VMs auf einem Wirt mit 16 GB RAM tun es genauso — die Befehle sind identisch, das Cluster merkt keinen Unterschied.
Wichtig ist nur: Netzwerk auf „Bridge", nicht NAT. Sonst erreichen die Knoten einander nicht.
Was dir dann fehlt, ist der Stromstecker-Versuch aus Folge 29 — den ersetzt du durch das Anhalten einer VM.
Namen und Adressen
Zwei Dinge, die man am Anfang festlegt und danach nie wieder anfasst:
Eindeutige, kleingeschriebene Namen. kubeadm nimmt den Hostnamen als Knotennamen. Zwei Maschinen mit demselben Namen können nicht beide beitreten, und Großbuchstaben lässt Kubernetes nicht zu (RFC 1123).
Feste Adressen. Entweder statisch auf dem Knoten oder — einfacher — als Reservierung im Router. Ein Knoten, der nach dem Neustart eine andere Adresse hat, zerlegt das Cluster, und die Fehlersuche sieht aus wie ein Kubernetes-Problem.
Dazu die Bereiche, die sich nicht überschneiden dürfen:
- Heimnetz: z. B.
192.168.178.0/24 - Pod-CIDR:
10.244.0.0/16 - Service-CIDR:
10.96.0.0/12
Liegt dein Heimnetz auf 10.x, musst du das Pod-CIDR ändern.
Maschinen finden, ohne davorzustehen
Sobald mehr als zwei Kisten dastehen, stellt sich eine Frage, die in keinem Tutorial vorkommt: Welches Blech ist eigentlich w3?
Die Antwort in einem echten Rechenzentrum: Der Name sagt nichts über den Ort — die Verknüpfung tut es. Drei Ebenen, alle ohne Bildschirm:
1. Der Knoten trägt seinen Ort als Label
sudo dmidecode -s system-serial-number
kubectl label node w3-k8n hardware.serial=7XKQ2M3 standort=regal-rechts
kubectl get nodes -L hardware.serial,standort
Kubernetes kennt die Hardware übrigens schon halb:
kubectl get node w3-k8n -o jsonpath='{.status.nodeInfo.systemUUID}'
sudo dmidecode -s system-uuid # dieselbe Kennung
2. Die Maschine zeigt sich selbst
sudo ethtool -p enp0s25 30
Die LED am Netzwerkanschluss blinkt 30 Sekunden — und die am Switch
gleich mit. Das ist im Rechenzentrum das Standardmittel, um einen Port zu
identifizieren; auf richtigen Servern macht dasselbe eine blaue Leuchte am
Gehäuse, angesteuert per ipmitool chassis identify.
Ohne ethtool geht es auch mit Bordmitteln:
sudo dd if=/dev/sda of=/dev/null bs=1M count=2000 # Plattenleuchte flackert
3. Wenn gar nichts mehr geht: Ein managed Switch zeigt, an welchem Port welche MAC-Adresse zuletzt gesehen wurde. So findet man auch eine Maschine, die nicht mehr startet.
Wake-on-LAN
Der Rechner ist aus — und ein Teil von ihm hört trotzdem zu.
Die Netzwerkkarte hängt an der Standby-Schiene des Netzteils, derselben, die
den Einschaltknopf versorgt. Sie bekommt weiter ein paar Milliwatt und wartet
auf ein einziges Muster: sechs Byte FF, gefolgt von der eigenen
MAC-Adresse, sechzehnmal hintereinander. Kein Betriebssystem, kein
Prozessor, keine IP — nur ein Chip, der ein Muster erkennt und dann die
Leitung zum Einschaltknopf schließt.
Das Verfahren stammt von 1997 und hat sich seither nicht geändert.
sudo apt install -y wakeonlan
wakeonlan 00:25:64:F2:96:FD
Voraussetzungen, in dieser Reihenfolge geprüft:
- Steckerleiste an — ohne Standby-Strom hört niemand zu
- BIOS:
Wake on LANaufLAN Only - Im System:
sudo ethtool enp0s25 | grep Wake-onmussgzeigen
Manche Karten vergessen den dritten Punkt beim Herunterfahren. Dann gehört
ethtool -s enp0s25 wol g in eine kleine systemd-Einheit.
Und der Nebeneffekt: Du kannst das Labor guten Gewissens ausschalten, wenn du nicht daran arbeitest. Bei 20–30 Watt je Maschine ist das über Wochen ein spürbarer Unterschied.
Zum Nachlesen
Eine geordnete Übersicht über die offizielle Dokumentation steht unter Nachlesen.
Befehle aus dieser Folge
lscpufree -hlsblk -d -o NAME,SIZE,ROTA,MODELsudo dmidecode -s system-serial-numbersudo ethtool -p enp0s25 30wakeonlan 00:25:64:F2:96:FD
Begriffe
- Control Plane
- der Knoten, der das Cluster steuert — hier zaehlt die Schreiblatenz der Platte
- Worker
- Knoten fuer die Arbeitslasten — hier zaehlen Kerne und Speicher
- CIDR
- der Adressbereich, aus dem Pods und Services ihre IPs bekommen
- Wake-on-LAN
- die Netzwerkkarte bleibt im Standby wach und startet den Rechner auf ein Magic Packet hin
- Magic Packet
- sechs Byte FF, dann sechzehnmal die eigene MAC-Adresse
Übung — mach es selbst
Erfasse deine eigene Hardware — und mach sie auffindbar.
- Auf jedem Knoten:
lscpu,free -h,lsblk -d -o NAME,SIZE,ROTA,MODEL. Die SpalteROTAist die wichtigste:1heisst drehende Platte. - Seriennummer auslesen:
sudo dmidecode -s system-serial-number - Beides als Label an den Knoten haengen:
kubectl label node <name> hardware.serial=<nr> standort=<wo> - Anzeigen lassen:
kubectl get nodes -L hardware.serial,standort sudo ethtool -p <schnittstelle> 30— und nachsehen, welche Kiste blinkt. Stimmt es mit dem Label ueberein?
Zusatz: Fahre einen Knoten herunter und wecke ihn per Wake-on-LAN wieder
auf. Wenn es nicht klappt, sind es fast immer diese drei: Steckerleiste
aus, BIOS-Einstellung fehlt, oder ethtool | grep Wake-on zeigt d.