Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe der Multi-NIC-Pod-Unterstützung in Azure Kubernetes Service (AKS) können Sie Pods, die auf Ihrem Cluster ausgeführt werden, eine oder mehrere sekundäre Netzwerkschnittstellen zusätzlich zur standardmäßigen primären, von CNI zugewiesenen Schnittstelle anfügen. Diese Funktion verwendet Kubernetes Dynamic Resource Allocation (DRA) und einen verwalteten DRAnet-Netzwerktreiber, mit denen sekundäre NICs zur Laufzeit automatisch erkannt und in Pods eingefügt werden.
Important
AKS-Preview-Funktionen stehen auf Selbstbedienungs- und Opt-in-Basis zur Verfügung. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:
Overview
Standardmäßig empfängt jeder Pod in einem AKS-Cluster eine einzelne Netzwerkschnittstelle (eth0) die vom Azure CNI-Plug-In verwaltet wird. Obwohl diese Schnittstelle für die meisten Workloads ausreichend ist, erfordern bestimmte Szenarien, dass Pods mehrere Netzwerkschnittstellen haben, die mit verschiedenen Subnetzen oder virtuellen Netzwerken verbunden sind.
Die Multi-NIC-Pod-Unterstützung behandelt diese Szenarien, indem sie Ihnen Folgendes ermöglicht:
- Bereitstellen von AKS-Knotenpools mit sekundären Netzwerkschnittstellen, die an jeden Knoten angefügt sind.
- Verwenden Sie einen AKS DRANET-Treiber, um die sekundären NICs auf jedem Knoten automatisch zu ermitteln.
- Diese sekundären Schnittstellen beim Scheduling über Ressourcenansprüche in Pods einfügen.
Important
Sekundäre NICs mit öffentlichen IPs umgehen die Azure Load Balancer und SNAT, sodass sie Workloads direkt im Internet verfügbar machen. AKS bietet keine standardmäßige Schutzebene für diesen Datenverkehr. Sie müssen geeignete NSG- und Firewallregeln konfigurieren und verwalten, um den eingehenden und ausgehenden Zugriff einzuschränken.
Funktionsweise
Die Unterstützung von Multi-NIC-Pods in AKS basiert auf drei wichtigen Komponenten, die zusammenarbeiten:
1. Konfiguration sekundärer Netzwerkschnittstellen
Wenn Sie einen Knotenpool erstellen oder aktualisieren, geben Sie eine oder mehrere sekundäre Netzwerkschnittstellen im Netzwerkprofil des Knotenpools an. AKS stellt die Knoten mit diesen zusätzlichen NICs bereit, und jede NIC stellt eine Verbindung mit dem von Ihnen angegebenen Subnetz bereit.
"networkProfile": {
"secondaryNetworkInterfaces": [
{
"type": "Standard",
"vnetSubnetId": "<subnet-resource-id>"
}
]
}
2. Dynamische Ressourcenzuordnung (Dynamic Resource Allocation, DRA)
Dynamic Resource Allocation (DRA) ist ein Kubernetes-Feature (GA in Kubernetes 1.34), das ein Framework zum Anfordern und Verwalten des Zugriffs auf Hardwareressourcen bereitstellt. Im Multi-NIC-Kontext verwaltet DRA den Lebenszyklus sekundärer Netzwerkschnittstellen als allocatable-Geräte.
Die folgenden DRA-Ressourcen werden verwendet:
- DeviceClass – Definiert eine Geräteklasse (sekundäre NICs), die der DRAnet-Treiber veröffentlicht, mit Selektoren, um zu filtern, welche Geräte übereinstimmen.
- ResourceClaimTemplate – Eine Vorlage, auf die sich Pods beziehen, um eine bestimmte Anzahl von NICs aus einer bestimmten Geräteklasse anzufordern.
3. Verwalteter DRAnet-Netzwerktreiber
Der DRAnet-Netzwerktreiber wird als DaemonSet auf jedem Knoten ausgeführt. Sie hat folgende Aufgaben:
- Ermittelt alle Netzwerkschnittstellen auf dem Knoten.
- Veröffentlicht verfügbare sekundäre NICs als DRA-Geräteressourcen.
- Verwaltet das Anhängen und Trennen von NICs an und von Pod-Netzwerknamespaces zur Pod-Planungszeit.
Der vollständige Ablauf
sequenceDiagram
participant User
participant AKS as AKS Control Plane
participant Node as AKS Node
participant DRAnet as DRAnet Driver
participant Scheduler as K8s Scheduler
participant Pod
User->>AKS: Create node pool with secondary NICs
AKS->>Node: Provision node with primary + secondary NICs
DRAnet->>Node: Discover available NICs
DRAnet->>Scheduler: Publish NIC devices via DRA
User->>Scheduler: Deploy pod with ResourceClaim
Scheduler->>DRAnet: Allocate NIC to pod
DRAnet->>Pod: Inject secondary NIC into pod namespace
Pod->>Pod: Pod runs with eth0 + secondary NIC(s)
Limitations
- Kubernetes-Version – Erfordert Kubernetes 1.34 oder höher (für DRA GA-Unterstützung).
- Bereich des virtuellen Netzwerks – Alle sekundären NICs müssen eine Verbindung mit demselben virtuellen Netzwerk wie die primäre NIC herstellen. Sie können sie an verschiedene Subnetze innerhalb dieses virtuellen Netzwerks anfügen.
- NIC-Zuordnung – Jede sekundäre NIC kann nur einem Pod zugewiesen werden. Sie können eine sekundäre NIC nicht über mehrere Pods hinweg freigeben.
- DRANET unterstützt nur Linux-Knotenpools. Windows-Knotenpools werden nicht unterstützt.
- Netzwerkrichtlinien werden nur für die primäre NIC erzwungen. Datenverkehr, der über sekundäre NICs fließt, umgeht die AKS-Netzwerkrichtlinienerzwingung.
-
VM-Größe – Die Vm-Größe des Knotenpools muss die Gesamtanzahl der Netzwerkschnittstellen (primär + sekundär) unterstützen. Informationen zum Überprüfen der maximalen Anzahl unterstützter Netzwerkschnittstellen und Accelerated Networking-Funktionen finden Sie in der Dokumentation zu Azure-VM-Größen oder verwenden Sie den
az vm list-skusBefehl. Im Folgenden finden Sie ein Beispiel:
az vm list-skus \
--location eastus \
--resource-type virtualMachines \
--all \
--query "[?name=='Standard_D8s_v5'].{
SKU:name,
MaxNICs:capabilities[?name=='MaxNetworkInterfaces']|[0].value,
AcceleratedNetworking:capabilities[?name=='AcceleratedNetworkingEnabled']|[0].value
}" \
-o table