Hosts bereitstellen
Bevor du beginnst
Du solltest bereits Anforderungen und Dimensionierung und Netzwerk, Firewalls und DNS gelesen und dich für eine Topologie, ein privates Netzwerk-CIDR und die drei externen Adressen entschieden haben.
Die Maschinen bereitstellen
Stelle x86-64-Maschinen entsprechend der in Anforderungen und Dimensionierung gewählten Topologie bereit.
Notiere den Hostnamen und die private IP jedes Hosts. Hostnamen müssen
eindeutig und konsistent auflösbar sein, entweder über internes DNS oder
/etc/hosts.
Das private Netzwerk konfigurieren
Platziere alle Maschinen in einem privaten, gerouteten Netzwerk, zum Beispiel
10.10.0.0/20. Jedes nicht überlappende private CIDR ist geeignet, sofern
dasselbe CIDR als ceph.nodesSubnet in der Installationskonfiguration
hinterlegt wird.
Stelle uneingeschränkte Kommunikation zwischen Codesphere-Hosts im privaten Netzwerk sicher. Kubernetes-, Ceph-, PostgreSQL-, Container-Registry- und SSH-Traffic durchqueren alle dieses Netzwerk. Falls interne Firewalls restriktiv sein müssen, leite eine explizite Port-Matrix für die gewählten Kubernetes- und Ceph-Versionen ab und teste sie vor der Installation.
Hosts ohne öffentliche Adressen benötigen ausgehenden Zugriff über NAT oder einen HTTP-Proxy. Sie müssen Paket-Repositories, die gewählte Container-Registry, Zertifikats-Endpunkte und alle vom Installer referenzierten Quell-URLs erreichen können.
Vermeide CIDR-Überlappungen zwischen dem Host-Netzwerk, dem Kubernetes-Pod-Netzwerk, dem Kubernetes-Service-Netzwerk, verbundenen Unternehmensnetzwerken und VPNs.
Die Ceph-Block-Devices vorbereiten
Ceph-Daten- und DB/WAL-Disks müssen als eigenständige, unbenutzte Block-Devices bereitgestellt werden — formatiere oder mounte sie nicht.
Wenn eine Disk zuvor verwendet wurde, lösche sie vor der Installation. Dies zerstört alle Daten auf der Disk — überprüfe die Gerätekennung sorgfältig, bevor du diese Befehle ausführst auf jeder Ceph-Daten-/DB-Disk auf jedem Ceph-Knoten:
sudo dd if=/dev/zero of=/dev/sdx bs=1M count=100 conv=fsync # sdx ist deine Ziel-Disk, z. B. sdb, sdc
sudo wipefs -a /dev/sdx
Danach kann ein Neustart erforderlich sein, damit das Betriebssystem die Änderung vollständig erkennt:
sudo reboot
Administrativen SSH-Zugriff einrichten
Konfiguriere die Jumpbox als einzigen öffentlichen SSH-Einstiegspunkt. Die Jumpbox muss sich als administrativer Benutzer mit jedem privaten Host verbinden können, und die Hosts müssen sich dort, wo es Ceph und die k0s-Installation erfordern, untereinander verbinden können.
Der Installationsablauf verwendet direktes Root-SSH und SSH-Agent-Forwarding. Falls organisatorische Richtlinien Root-SSH verbieten, stelle einen gleichwertigen privilegierten Automatisierungspfad bereit und verifiziere ihn vor der Installation mit dem Installer. Schütze den privaten Schlüssel, beschränke eingehenden Zugriff auf vertrauenswürdige Quellbereiche, und verwende in einem Produktionsworkflow Host-Key-Verifizierung.
Verifiziere von der Jumpbox aus jeden Host:
ssh root@<postgres-private-ip> hostname
ssh root@<ceph-private-ip> hostname
ssh root@<k0s-private-ip> hostname
Jeden Installationshost tunen
Wende folgende Kernel-Einstellungen auf den PostgreSQL-, Ceph- und k0s-Hosts an und mache sie persistent:
cat >/etc/sysctl.d/99-codesphere.conf <<'EOF'
fs.inotify.max_user_watches=1048576
fs.inotify.max_user_instances=8192
vm.max_map_count=262144
EOF
sysctl --system
Verifiziere die aktiven Werte:
sysctl fs.inotify.max_user_watches
sysctl fs.inotify.max_user_instances
sysctl vm.max_map_count
Zeit synchronisieren
Halte die Zeit auf jedem Host synchron, zum Beispiel mit chrony:
sudo apt update
sudo apt install chrony -y
sudo systemctl enable chrony --now
sudo chronyc sources
Bestätige, dass Hostnamen, private Adressen, angeschlossene Disks, DNS-Auflösung, ausgehende Konnektivität und SSH-Zugriff einen Neustart überstehen, bevor du Codesphere installierst.
Was du jetzt haben solltest
- Jeder Host bereitgestellt, im privaten Netzwerk, mit notiertem Hostnamen und IP.
- Ceph-Daten-/DB-Disks leer und ungemountet.
- Passwortloses Root-SSH von der Jumpbox zu jedem Host.
- Kernel-Tuning angewendet und verifiziert auf PostgreSQL-, Ceph- und k0s-Hosts.
- Auf allen Hosts synchronisierte Zeit.
Weiter geht's
Weiter geht es mit Jumpbox vorbereiten und Konfiguration erzeugen.