Multus CNI #
Multus ist ein Meta-CNI-Plugin (Container Network Interface), das es Kubernetes-Pods ermöglicht, mehrere Netzwerkschnittstellen gleichzeitig zu verwenden. Es fungiert als Multiplexer zwischen dem primären CNI-Plugin des Clusters und weiteren konfigurierten Netzwerken.
Quelle #
Das Helm-Chart rke2-multus stammt aus dem Rancher RKE2 Charts Repository. Es beinhaltet auch das IPAM-Plugin Whereabouts, das für die Verwaltung statischer IP-Adressen in Multus-Netzwerken verantwortlich ist.
Dokumentation #
Funktion #
Multus ermöglicht die Konfiguration zusätzlicher Netzwerkschnittstellen für Pods über NetworkAttachmentDefinition-Ressourcen. Im Cluster wird dies genutzt, um bestimmten Anwendungen (z.B. Music Assistant, Home Assistant) eine direkte Verbindung ins Heimnetzwerk via MacVLAN zu ermöglichen, sodass sie als eigenständige Geräte mit fester IP-Adresse erscheinen. Longhorn hängt seinen Instance-Managern auf demselben Weg das Storage-Netz lhnet1 an (apps/longhorn/NetworkAttachmentDefinition.yaml).
Lokale Anpassungen #
Die values.yaml konfiguriert Multus für k3s-spezifische Pfade:
- CNI-Konfigurationsverzeichnis:
/var/lib/rancher/k3s/agent/etc/cni/net.d - CNI-Binary-Verzeichnis:
/var/lib/rancher/k3s/data/cni - Kubeconfig:
/var/lib/rancher/k3s/agent/etc/cni/net.d/multus.d/multus.kubeconfig - Whereabouts: Aktiviert und mit denselben k3s-Pfaden konfiguriert.
Installation #
Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im kube-system-Namespace bereitgestellt:
1kubectl kustomize --enable-helm apps/multus | kubectl apply -f -Abhängigkeiten #
- k3s mit aktiviertem CNI-Support.
- Anwendungen, die Multus nutzen, müssen
NetworkAttachmentDefinition-Ressourcen in ihrem jeweiligen Namespace definieren.
Updates #
Startet Multus neu, bekommen Pods, die in diesem Moment entstehen, nur das Pod-Netz und keine zusätzliche Schnittstelle. Eine Fehlermeldung gibt es dafür nicht. Multus deshalb nie zusammen mit Longhorn ausrollen und danach die Prüfung aus apps/longhorn/README.md (Abschnitt Upgrade) ausführen. Pods anderer Apps mit MacVLAN-Anbindung bei Bedarf neu starten.