|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Anforderungen
K3s ist sehr leichtgewichtig, hat jedoch einige Mindestanforderungen, die im Folgenden aufgeführt sind.
Egal, ob Sie K3s in einem Container oder als nativen Linux-Dienst konfigurieren, jeder Knoten, der K3s ausführt, sollte die folgenden Mindestanforderungen erfüllen. Diese Anforderungen sind die Basis für K3s und seine verpackten Komponenten und beinhalten nicht die Ressourcen, die von der Arbeitslast selbst verbraucht werden.
Voraussetzungen
Zwei Knoten dürfen nicht denselben Hostnamen haben.
Wenn mehrere Knoten denselben Hostnamen haben sollen oder wenn Hostnamen von einem automatisierten Bereitstellungssystem wiederverwendet werden können, verwenden Sie die --with-node-id Option, um jedem Knoten ein zufälliges Suffix anzuhängen, oder entwickeln Sie einen einzigartigen Namen, den Sie mit --node-name oder $K3S_NODE_NAME für jeden Knoten, den Sie zum Cluster hinzufügen, übergeben.
Architektur
K3s ist für die folgenden Architekturen verfügbar:
-
x86-64
-
armhf
-
arm64/aarch64
|
ARM64-Seitengröße
Vor den Veröffentlichungen im Mai 2023 (v1.24.14+k3s1, v1.25.10+k3s1, v1.26.5+k3s1, v1.27.2+k3s1) muss auf |
Betriebssysteme
Es wird erwartet, dass K3s auf den meisten modernen Linux-Systemen funktioniert.
Einige Betriebssysteme haben zusätzliche Einrichtungsvoraussetzungen:
- SUSE Linux Enterprise / openSUSE
-
Firewalld
Es wird empfohlen, firewalld auszuschalten:
systemctl disable firewalld --nowWenn Sie firewalld aktiviert lassen möchten, sind standardmäßig die folgenden Regeln erforderlich:
firewall-cmd --permanent --add-port=6443/tcp #apiserver firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services firewall-cmd --reloadZusätzliche Ports müssen je nach Ihrer Konfiguration möglicherweise geöffnet werden. Siehe Inbound Rules für weitere Informationen. Wenn Sie die Standard-CIDR für Pods oder Dienste ändern, müssen Sie die Firewall-Regeln entsprechend aktualisieren.
- Red Hat Enterprise Linux / CentOS / Fedora
-
RHEL 10
Auf RHEL 10 ist ein zusätzliches Paket erforderlich:
sudo dnf install -y kernel-modules-extraFirewalld
Es wird empfohlen, firewalld auszuschalten:
systemctl disable firewalld --nowWenn Sie firewalld aktiviert lassen möchten, sind standardmäßig die folgenden Regeln erforderlich:
firewall-cmd --permanent --add-port=6443/tcp #apiserver firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services firewall-cmd --reloadZusätzliche Ports müssen je nach Ihrer Konfiguration möglicherweise geöffnet werden. Siehe Inbound Rules für weitere Informationen. Wenn Sie die Standard-CIDR für Pods oder Dienste ändern, müssen Sie die Firewall-Regeln entsprechend aktualisieren.
Ältere RHEL/CentOS-VersionenBetriebssystemversionen vor RHEL 8.4 verwenden NetworkManager mit einem bekannten Fehler, der die K3s-Netzwerkverbindung beeinträchtigt. Wenn Sie eine ältere Version verwenden, ist es erforderlich, nm-cloud-setup zu deaktivieren und den Knoten neu zu starten:
systemctl disable nm-cloud-setup.service nm-cloud-setup.timer reboot - Ubuntu / Debian
-
UFW
Ältere Debian-Versionen können unter einem bekannten iptables-Fehler leiden. Siehe Bekannte Probleme.
Es wird empfohlen, ufw (unkomplizierte Firewall) auszuschalten:
ufw disableWenn Sie ufw aktiviert lassen möchten, sind standardmäßig die folgenden Regeln erforderlich:
ufw allow 6443/tcp #apiserver ufw allow from 10.42.0.0/16 to any #pods ufw allow from 10.43.0.0/16 to any #servicesZusätzliche Ports müssen je nach Ihrer Konfiguration möglicherweise geöffnet werden. Siehe Inbound Rules für weitere Informationen. Wenn Sie die Standard-CIDR für Pods oder Dienste ändern, müssen Sie die Firewall-Regeln entsprechend aktualisieren.
- Raspberry Pi
-
Raspberry Pi OS basiert auf Debian und kann unter einem bekannten iptables-Fehler leiden. Siehe Bekannte Probleme.
Cgroups
Standardinstallationen von Raspberry Pi OS starten nicht mit
cgroupsaktiviert. K3S benötigtcgroups, um den systemd-Dienst zu starten.cgroupskann aktiviert werden, indemcgroup_memory=1 cgroup_enable=memoryan/boot/firmware/cmdline.txtangehängt wird.Auf Debian 11 und älteren Pi OS-Versionen befindet sich die cmdline.txt unter
/boot/cmdline.txt.Beispiel cmdline.txt:
console=serial0,115200 console=tty1 root=PARTUUID=58b06195-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_memory=1 cgroup_enable=memory
Ubuntu Vxlan-Modul
Mit Ubuntu 21.10 bis Ubuntu 23.10 wurde die vxlan-Unterstützung auf dem Raspberry Pi in ein separates Kernel-Modul verschoben. Dieser Schritt ist für Ubuntu 24.04 und spätere Versionen nicht erforderlich.
sudo apt install linux-modules-extra-raspi
Für weitere Informationen zu den getesteten Betriebssystemen mit Rancher verwalteten K3s-Clustern, siehe die Rancher-Support- und Wartungsbedingungen.
Hardware
Die Hardwareanforderungen skalieren basierend auf der Größe Ihrer Bereitstellungen. Die Mindestanforderungen sind:
| Knoten | PROZESSOR | RAM |
|---|---|---|
Server |
2 Kerne |
2 GB |
Agent |
1 Kern |
512 MB |
Ressourcenprofilierung erfasst die Ergebnisse von Tests und Analysen, um die minimalen Ressourcenanforderungen für den K3s-Agenten, den K3s-Server mit einer Arbeitslast und den K3s-Server mit einem Agenten zu bestimmen.
Festplatten
Die K3s-Leistung hängt von der Leistung der Datenbank ab. Um optimale Geschwindigkeit zu gewährleisten, empfehlen wir, wenn möglich, eine SSD zu verwenden.
Wenn K3s auf einem Raspberry Pi oder anderen ARM-Geräten bereitgestellt wird, wird empfohlen, eine externe SSD zu verwenden. etcd ist schreibintensiv; SD-Karten und eMMC können die IO-Belastung nicht bewältigen.
Server-Größenleitfaden
Wenn die CPU und der RAM auf dem Server (Control-Plane + etcd) Knoten begrenzt sind, gibt es Einschränkungen hinsichtlich der Anzahl der Agentenknoten, die unter Standardarbeitslastbedingungen hinzugefügt werden können.
| Server-CPU | Server-RAM | Anzahl der Agenten |
|---|---|---|
2 |
4 GB |
0-350 |
4 |
8 GB |
351-900 |
8 |
16 GB |
901-1800 |
16+ |
32 GB |
1800+ |
|
Hochverfügbarkeitsdimensionierung
Bei Verwendung einer Hochverfügbarkeitskonfiguration mit 3 Serverknoten kann die Anzahl der Agenten ungefähr ~ 50 % mehr als in der obigen Tabelle skalieren. Z. B. können 3 Server mit 4 vCPU/8 GB auf ~ 1200 Agenten skalieren. |
Es wird empfohlen, Agentenknoten in Gruppen von 50 oder weniger hinzuzufügen, um der CPU zu ermöglichen, Platz freizugeben, da es beim Hinzufügen von Knoten zu einem Anstieg kommt. Denken Sie daran, die Standard-cluster-cidr zu ändern, wenn Sie mehr als 255 Knoten wünschen!
Ressourcenprofilierung enthält weitere Informationen, wie diese Empfehlungen gefunden wurden.
Netzwerke
Der K3s-Server benötigt, dass Port 6443 von allen Knoten erreichbar ist.
Die Knoten müssen in der Lage sein, andere Knoten über UDP-Port 8472 zu erreichen, wenn das Flannel VXLAN-Backend verwendet wird, oder über UDP-Port 51820 (und 51821, wenn IPv6 verwendet wird), wenn das Flannel WireGuard-Backend verwendet wird. Der Knoten sollte auf keinem anderen Port lauschen. K3s verwendet Reverse-Tunneling, sodass die Knoten ausgehende Verbindungen zum Server herstellen und der gesamte Kubelet-Verkehr durch diesen Tunnel läuft. Wenn Sie jedoch Flannel nicht verwenden und Ihre eigene benutzerdefinierte CNI bereitstellen, sind die von Flannel benötigten Ports für K3s nicht erforderlich.
Wenn Sie den Metrikserver nutzen möchten, müssen alle Knoten über Port 10250 miteinander erreichbar sein.
Wenn Sie eine hohe Verfügbarkeit mit eingebettetem etcd erreichen möchten, müssen die Serverknoten über die Ports 2379 und 2380 miteinander erreichbar sein.
|
Wichtig
Der VXLAN-Port auf den Knoten sollte nicht der Öffentlichkeit zugänglich gemacht werden, da dies Ihr Cluster-Netzwerk für jeden zugänglich macht. Führen Sie Ihre Knoten hinter einer Firewall/Sicherheitsgruppe aus, die den Zugriff auf Port 8472 deaktiviert. |
|
Flannel ist auf das Bridge CNI-Plugin angewiesen, um ein L2-Netzwerk zu erstellen, das den Verkehr weiterleitet. Rogue Pods mit |
Eingehende Regeln für K3s-Knoten
| Protokoll | Port | Quelle | Ziel | Beschreibung |
|---|---|---|---|---|
TCP |
2379-2380 |
Server |
Server |
Erforderlich nur für HA mit eingebettetem etcd |
TCP |
6443 |
Agenten |
Server |
K3s-Überwachungsdienst und Kubernetes API-Server |
UDP |
8472 |
Alle Knoten |
Alle Knoten |
Erforderlich nur für Flannel VXLAN |
TCP |
10250 |
Alle Knoten |
Alle Knoten |
Kubelet-Metriken |
UDP |
51820 |
Alle Knoten |
Alle Knoten |
Erforderlich nur für Flannel WireGuard mit IPv4 |
UDP |
51821 |
Alle Knoten |
Alle Knoten |
Erforderlich nur für Flannel WireGuard mit IPv6 |
TCP |
5001 |
Alle Knoten |
Alle Knoten |
Erforderlich nur für eingebettete verteilte Registry (Spegel) |
TCP |
6443 |
Alle Knoten |
Alle Knoten |
Erforderlich nur für eingebettete verteilte Registry (Spegel) |
Typischerweise ist sämtlicher ausgehender Verkehr erlaubt.
Zusätzliche Änderungen an der Firewall können je nach verwendetem Betriebssystem erforderlich sein.
Große Cluster
Die Hardwareanforderungen basieren auf der Größe Ihres K3s-Clusters. Für Produktions- und große Cluster empfehlen wir die Verwendung eines Setups mit hoher Verfügbarkeit und einer externen Datenbank. Die folgenden Optionen werden für die externe Datenbank in der Produktion empfohlen:
-
MySQL
-
PostgreSQL
-
etcd
CPU und Arbeitsspeicher
Die folgenden sind die minimalen CPU- und Arbeitsspeicheranforderungen für Knoten in einem Hochverfügbarkeits-K3s-Server:
| Bereitstellungsgröße | Knoten | vCPUs | RAM |
|---|---|---|---|
Small |
Bis 10 |
2 |
4 GB |
Mittel |
Bis 100 |
4 |
8 GB |
Groß |
Bis 250 |
8 |
16 GB |
X-Groß |
Bis zu 500 |
16 |
32 GB |
XX-Groß |
500+ |
32 |
64 GB |
Festplatten
Die Clusterleistung hängt von der Datenbankleistung ab. Um optimale Geschwindigkeit zu gewährleisten, empfehlen wir, immer SSD-Festplatten für Ihr K3s-Cluster zu verwenden. Bei Cloud-Anbietern sollten Sie auch die minimale Größe verwenden, die die maximale IOPS ermöglicht.
Netzwerk
Sie sollten in Betracht ziehen, die Größe des Subnetzes für den Cluster-CIDR zu erhöhen, damit Ihnen nicht die IP-Adressen für die Pods ausgehen. Sie können dies tun, indem Sie die --cluster-cidr Option beim Starten des K3s-Servers übergeben.
Datenbank
K3s unterstützt verschiedene Datenbanken, einschließlich MySQL, PostgreSQL, MariaDB und etcd. Siehe Cluster-Datenspeicher für weitere Informationen.
Der folgende Größenleitfaden zeigt die Datenbankressourcen, die Sie benötigen, um große Cluster zu betreiben:
| Implementierungsgröße | Knoten | vCPUs | RAM |
|---|---|---|---|
Small |
Bis 10 |
1 |
2 GB |
Mittel |
Bis 100 |
2 |
8 GB |
Groß |
Bis 250 |
4 |
16 GB |
X-Groß |
Bis zu 500 |
8 |
32 GB |
XX-Groß |
500+ |
16 |
64 GB |