Bereitstellung der Hosts
Bevor du beginnst
Du solltest bereits Anforderungen und Dimensionierung und Netzwerk, Firewalls und DNS durchgesehen und dich für eine Topologie, ein privates Netzwerk-CIDR sowie die drei externen Adressen entschieden haben.
Maschinen bereitstellen
Stelle x86-64-Maschinen entsprechend der Topologie bereit, die du in Anforderungen und Dimensionierung ausgewählt hast.
Notiere Hostname und private IP jedes Hosts. Hostnamen müssen eindeutig und
konsistent auflösbar sein, entweder über internes DNS oder /etc/hosts.
Privates 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 den Codesphere-Hosts im privaten Netzwerk sicher. Kubernetes, Ceph, PostgreSQL, Container-Registry und SSH-Datenverkehr laufen alle über dieses Netzwerk. Wenn interne Firewalls restriktiv sein müssen, leite eine explizite Portmatrix 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.
Ceph-Blockgeräte vorbereiten
Ceph-Daten- und DB/WAL-Festplatten müssen als eigenständige, unbenutzte Blockgeräte bereitgestellt werden — formatiere oder mounte sie nicht.
Wenn eine Festplatte zuvor bereits verwendet wurde, lösche sie vor der Installation. Dies zerstört alle Daten auf der Festplatte — überprüfe die Gerätekennung sorgfältig, bevor du diese Befehle auf jeder Ceph-Daten-/DB-Festplatte auf jedem Ceph-Node ausführst:
sudo dd if=/dev/zero of=/dev/sdx bs=1M count=100 conv=fsync # sdx is your target disk, e.g. sdb, sdc
sudo wipefs -a /dev/sdx
Anschließend 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, wo von der Ceph- und k0s-Installation gefordert, untereinander verbinden können.
Der Installationsworkflow verwendet direktes Root-SSH und SSH-Agent-Forwarding; derzeit gibt es keine unterstützte Alternative. Falls organisatorische Richtlinien Root-SSH untersagen, kontaktiere Codesphere vor der Bereitstellung. Schütze den privaten Schlüssel, beschränke eingehenden Zugriff auf vertrauenswürdige Quellbereiche und verwende in einem Produktions-Workflow Host-Key-Verifizierung.
Überprüfe von der Jumpbox aus jeden Host mit einem einfachen, nicht interaktiven Login:
ssh root@<postgres-private-ip> hostname
ssh root@<ceph-private-ip> hostname
ssh root@<k0s-private-ip> hostname
Ein ungewöhnliches Format des privaten Schlüssels hat schon zu Fehlern der Art
Permission denied (publickey) gegenüber dem Installer geführt, selbst wenn derselbe
Schlüssel mit anderen SSH-Clients funktioniert — bestätige, dass die obigen einfachen Befehle
nicht interaktiv erfolgreich sind, bevor du fortfährst.
Jeden Installationshost optimieren
Wende die folgenden Kernel-Einstellungen auf den PostgreSQL-, Ceph- und k0s-Hosts an und mache sie dauerhaft:
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
Überprüfe 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
Stelle sicher, dass Hostnamen, private Adressen, angeschlossene Festplatten, 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-Festplatten leer und nicht gemountet.
- Funktionierender, nicht interaktiver Root-SSH-Zugriff von der Jumpbox zu jedem Host.
- Kernel-Optimierungen angewendet und überprüft auf PostgreSQL-, Ceph- und k0s-Hosts.
- Zeit auf allen Hosts synchronisiert.
Nächster Schritt
Fahre fort mit Jumpbox vorbereiten und Installationskonfiguration erstellen.