Netzwerkoptionen
Kubernetes erfordert die Installation eines oder mehrerer CNI-Plugins, um die Pod-Netzwerkverbindung bereitzustellen. RKE2 bündelt vier Haupt-CNI-Plugins: Canal, Cilium, Calico und Flannel. Nur Calico und Flannel unterstützen Microsoft Windows. RKE2 enthält auch Multus als sekundäres CNI-Plugin, das zusammen mit einem primären CNI-Plugin aktiviert werden muss. Für weitere Informationen siehe die Multus und SR-IOV Dokumentation.
Canal ist das Standard-CNI-Plugin, aber alle gebündelten Plugins werden unterstützt. Die gebündelten CNI-Plugins werden über Helm-Chart installiert und können durch Bereitstellung eines HelmChartConfig mit zusätzlichen Chartwerten angepasst werden. Für weitere Informationen zur Verwendung von HelmChartConfig-Ressourcen siehe die Helm-Integration Dokumentation und die spezifischen CNI-Beispiele, die unten bereitgestellt werden.
Wählen Sie ein CNI-Plugin
Verwenden Sie den cni Schlüssel der Konfigurationsdatei, um das CNI-Plugin auszuwählen, das Sie verwenden möchten. Wenn Sie keines der gebündelten CNI-Plugins verwenden möchten, können Sie cni auf none setzen. Beachten Sie, dass Knoten als NotReady bleiben und als unschedulable markiert werden, bis ein CNI-Plugin installiert ist.
# /etc/rancher/rke2/config.yaml
cni: canal
Die gebündelten CNI-Plugins werden als AddOns bereitgestellt, die eine HelmChart-Ressource bereitstellen, wie in der Helm-Integration Dokumentation beschrieben. CNI-Plugin-Charts heißen rke2-<CNI-PLUGIN-NAME> und sind im kube-system Namespace zu finden.
Um die Helm-Chart-Werte für ein gebündeltes CNI-Plugin-Chart anzupassen, müssen Sie eine HelmChartConfig-Ressource erstellen, die mit dem Namen und dem Namespace des entsprechenden HelmCharts übereinstimmt. Siehe die Registerkarten unten für Beispiele zur Anpassung der Chartwerte für jedes der gebündelten CNI-Plugins.
Standard-Chartwerte finden Sie, indem Sie das RKE2-Chart-Repository durchsuchen und values.yaml für die Version des Charts, das mit Ihrer RKE2-Version gebündelt ist, referenzieren.
Canal verwendet Flannel für den internen Verkehr zwischen Knoten und Calico für den internen Verkehr innerhalb von Knoten sowie für Netzwerkrichtlinien. Standardmäßig wird es vxlan-Kapselung verwenden, um ein Overlay-Netzwerk zwischen den Knoten zu erstellen. Um beispielsweise die Flannel-Schnittstelle zu überschreiben, können Sie die folgenden Chart-Werte anwenden:
# /var/lib/rancher/rke2/server/manifests/rke2-canal-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-canal
namespace: kube-system
spec:
valuesContent: |-
flannel:
iface: "eth1"
Um Flannels Wireguard-Backend (Benutzer von Kernels < 5.6 müssen ein Modul installieren) zu verwenden, müssen die folgenden Chart-Werte verwendet werden:
# /var/lib/rancher/rke2/server/manifests/rke2-canal-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-canal
namespace: kube-system
spec:
valuesContent: |-
flannel:
backend: "wireguard"
Bitte starten Sie danach das Canal-Daemonset neu, um die neuere Konfiguration zu verwenden: kubectl rollout restart ds rke2-canal -n kube-system.
Für weitere Informationen zu den vollständigen Optionen der Canal-Konfiguration verweisen Sie bitte auf die RKE2-Charts.
eBPF-Datenebene
|
Versionssperre
RKE2 unterstützt die Calico eBPF-Datenebene seit den Veröffentlichungen von Januar 2026: v1.33.8+rke2r1, v1.34.4+rke2r1 und v1.35.1+rke2r1. |
Calico bietet eine effiziente eBPF-Datenebene, die anstelle der standardmäßigen iptables-basierten Implementierung aktiviert werden kann. Die Datenebene von Calico kann auch verwendet werden, um die standardmäßige Kubernetes kube-proxy-Implementierung zu ersetzen.
Um die eBPF-Datenebene von Calico zu aktivieren, setzen Sie RKE2 mit disable-kube-proxy: true in der Konfigurationsdatei ein und verwenden Sie die folgende HelmChartConfig:
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-calico
namespace: kube-system
spec:
valuesContent: |-
installation:
calicoNetwork:
kubeProxyManagement: Enabled
linuxDataplane: BPF
kubernetesServiceEndpoint:
host: "localhost"
port: "6443"
Für weitere Informationen zur eBPF-Datenebene von Calico verweisen Sie auf die Dokumentation von Calico.
|
Canal erfordert, dass das Paket iptables oder xtables-nft auf dem Knoten installiert ist. |
|
Canal wird derzeit nicht auf Clustern mit Windows-Knoten unterstützt. |
Bitte überprüfen Sie Bekannte Probleme und Einschränkungen, wenn Sie Probleme mit der IP-Zuweisung haben.
Bei der Verwendung von Cilium müssen Sie sicherstellen, dass die Knoten eine unterstützte Kernelversion (>= 4.9.17) haben und die Anforderungen erfüllen. Um die Standardoptionen zu überschreiben, verwenden Sie bitte eine HelmChartConfig-Ressource. Die HelmChartConfig-Ressource muss mit dem Namen und dem Namespace des entsprechenden HelmCharts übereinstimmen. Um beispielsweise Wireguard zu aktivieren:
# /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-cilium
namespace: kube-system
spec:
valuesContent: |-
encryption:
enabled: true
type: wireguard
Für weitere Informationen zu den im Cilium-Chart verfügbaren Werten lesen Sie bitte im rke2-charts Repository nach.
Kube-Proxy-Ersatz
Cilium umfasst fortschrittliche Funktionen, um kube-proxy vollständig zu ersetzen und das Routing von Diensten mithilfe von eBPF anstelle von iptables zu implementieren. Es wird nicht empfohlen, kube-proxy durch Cilium zu ersetzen, wenn Ihr Kernel nicht v5.8 oder neuer ist, da wichtige Fehlerkorrekturen und Funktionen fehlen werden. Um diesen Modus zu aktivieren, setzen Sie RKE2 mit disable-kube-proxy: true in der Konfigurationsdatei ein und verwenden Sie die folgenden Chart-Werte:
# /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-cilium
namespace: kube-system
spec:
valuesContent: |-
kubeProxyReplacement: true
k8sServiceHost: "localhost"
k8sServicePort: "6443"
Für weitere Informationen überprüfen Sie bitte die Upstream-Dokumentation.
Cilium Hubble
Cilium umfasst auch eine Observabilitätsplattform namens Hubble. Um Hubble zu aktivieren, verwenden Sie die folgenden Chart-Werte:
# /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-cilium
namespace: kube-system
spec:
valuesContent: |-
hubble:
enabled: true
relay:
enabled: true
ui:
enabled: true
|
Cilium wird derzeit nicht unter Windows unterstützt. |
Um beispielsweise die MTU der Schnittstelle zu ändern, können Sie die folgenden Chart-Werte verwenden:
# /var/lib/rancher/rke2/server/manifests/rke2-calico-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-calico
namespace: kube-system
spec:
valuesContent: |-
installation:
calicoNetwork:
mtu: 9000
Aufgrund eines Kernel-Fehlers in Versionen vor 5.7 deaktiviert Calico das Hardware-Prüfsummen-Offloading. Diese Konfiguration begrenzt die TCP-Leistung auf ~2,50Gbit/s. Wenn Sie eine höhere Durchsatzrate benötigen und eine Kernelversion größer als 5.7 haben, können Sie das Prüfsummen-Offloading aktivieren, indem Sie die folgende HelmChartConfig verwenden:
# /var/lib/rancher/rke2/server/manifests/rke2-calico-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-calico
namespace: kube-system
spec:
valuesContent: |-
felixConfiguration:
featureDetectOverride: "ChecksumOffloadBroken=false"
Für weitere Informationen zu den verfügbaren Werten für das Calico-Chart lesen Sie bitte im rke2-charts Repository nach.
|
Calico erfordert, dass das Paket iptables oder xtables-nft auf dem Knoten installiert ist. |
|
Wenn Sie Calico mit aktiviertem SELinux installieren, lesen Sie bitte diesen Abschnitt. |
|
Flannel ist ab den Veröffentlichungen im Februar 2024 verfügbar: v1.29.2, v1.28.7, v1.27.11, v1.26.14. Nur das |
Um beispielsweise die MTU der Schnittstelle zu ändern, können Sie die folgenden Chart-Werte verwenden:
# /var/lib/rancher/rke2/server/manifests/rke2-flannel-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-flannel
namespace: kube-system
spec:
valuesContent: |-
flannel:
mtu: 9000
|
Flannel unterstützt keine Netzwerk-Richtlinien. Daher wird es für gehärtete Installationen nicht empfohlen. |
Dual-Stack-Konfiguration
IPv4/IPv6 Dual-Stack-Netzwerke ermöglichen die Zuweisung sowohl von IPv4- als auch von IPv6-Adressen an Pods und Dienste. Um RKE2 im Dual-Stack-Modus zu konfigurieren, müssen Sie in den Control-Plane-Knoten einen gültigen IPv4/IPv6 Dual-Stack CIDR für Pods und Dienste festlegen. Verwenden Sie dazu die Konfigurationsdateischlüssel cluster-cidr und service-cidr:
#/etc/rancher/rke2/config.yaml
cluster-cidr: "10.42.0.0/16,2001:cafe:42::/56"
service-cidr: "10.43.0.0/16,2001:cafe:43::/112"
Das Dual-Stack-Netzwerk muss konfiguriert werden, wenn der Cluster zuerst erstellt wird. Es kann nicht in einem bestehenden Cluster aktiviert werden, nachdem er als nur IPv4 gestartet wurde.
Jedes CNI-Plugin benötigt möglicherweise eine andere Konfiguration für Dual-Stack:
-
Canal CNI-Plugin
-
Cilium CNI Plugin
-
Calico CNI Plugin
-
Flannel CNI-Plugin
Canal erkennt automatisch die RKE2-Konfiguration für Dual-Stack und benötigt keine zusätzliche Konfiguration. Dual-Stack wird derzeit in den Windows-Installationen von RKE2 nicht unterstützt.
Cilium erkennt automatisch die RKE2-Konfiguration für Dual-Stack und benötigt keine zusätzliche Konfiguration.
Calico erkennt automatisch die RKE2-Konfiguration für Dual-Stack und benötigt keine zusätzliche Konfiguration. Wenn es im Dual-Stack-Modus bereitgestellt wird, erstellt es zwei verschiedene IP-Pool-Ressourcen. Beachten Sie, dass Calico beim Einsatz von Dual-Stack BGP anstelle von VXLAN-Kapselung nutzt. Dual-Stack und BGP werden derzeit in den Windows-Installationen von RKE2 nicht unterstützt.
Flannel erkennt automatisch die RKE2-Konfiguration für Dual-Stack und benötigt keine zusätzliche Konfiguration.
IPv6-Setup
Im Falle einer IPv6-Only-Konfiguration muss RKE2 localhost verwenden, um auf die Liveness-URL des ETCD-Pods zuzugreifen; überprüfen Sie, ob Ihr Betriebssystem die Datei /etc/hosts korrekt konfiguriert:
::1 localhost
|
Bekanntes Problem
Wenn Ihre IPv6-Standardroute durch eine Routeranzeige (RA) festgelegt wird, müssen Sie den sysctl |
- Im IPv6-Only-Modus unterstützt Cilium keine Kapselung von IPv6-Verkehr zwischen Knoten. Die Kommunikation zwischen Pods auf verschiedenen Knoten ist auf das Netzwerk des Hosts angewiesen, um Pakete ordnungsgemäß an die Pod-IPs weiterzuleiten. Cilium kann so konfiguriert werden, dass es statische Routen zwischen Knoten automatisch mit der folgenden Konfiguration verwaltet.
# /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml
---
kind: HelmChartConfig
metadata:
name: rke2-cilium
namespace: kube-system
spec:
valuesContent: |-
autoDirectNodeRoutes: true
Knoten ohne Hostnamen
Einige Cloud-Anbieter, wie Linode, erstellen Maschinen mit "localhost" als Hostnamen, und andere haben möglicherweise überhaupt keinen Hostnamen festgelegt. Dies kann Probleme bei der Namensauflösung verursachen. Sie können RKE2 mit dem node-name Parameter ausführen, und dies wird den Knotennamen übergeben, um dieses Problem zu lösen.