Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usando il supporto di pod con più schede di interfaccia di rete in Servizio Azure Kubernetes (AKS), è possibile collegare una o più interfacce di rete secondarie ai pod in esecuzione nel cluster, insieme all'interfaccia primaria assegnata da CNI standard. Questa funzionalità usa Kubernetes Dynamic Resource Allocation (DRA) e un driver di rete DRAnet gestito, che individua e inserisce automaticamente le schede di interfaccia di rete secondarie nei pod in fase di esecuzione.
Importante
Le funzionalità in anteprima di AKS sono disponibili in modalità self-service, su base volontaria. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime di AKS sono coperte solo parzialmente dall'assistenza clienti nei limiti del possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Overview
Per impostazione predefinita, ogni pod in un cluster AKS riceve una singola interfaccia di rete (eth0) gestita dal plug-in Azure CNI. Sebbene questa interfaccia sia sufficiente per la maggior parte dei carichi di lavoro, alcuni scenari richiedono che i pod abbiano più interfacce di rete connesse a subnet o reti virtuali diverse.
Il supporto dei pod Multi-NIC risolve questi scenari consentendo di:
- Effettuare il provisioning dei pool di nodi del servizio Azure Kubernetes con interfacce di rete secondarie collegate a ogni nodo.
- Usare un driver DRANET di AKS per individuare automaticamente le NIC secondarie in ogni nodo.
- Inserire queste interfacce secondarie nei pod al momento della pianificazione tramite claim di risorse.
Importante
Le schede di interfaccia di rete secondarie con indirizzi IP pubblici aggirano Azure Load Balancer e SNAT, quindi espongono i carichi di lavoro direttamente a Internet. Il servizio Azure Kubernetes non fornisce un livello di protezione predefinito per questo traffico. È necessario configurare e gestire le regole NSG e del firewall appropriate per limitare l'accesso in ingresso e in uscita.
Funzionamento
Il supporto dei pod con più schede di interfaccia di rete in AKS si basa su tre componenti chiave che interagiscono tra loro:
1. Configurazione delle interfacce di rete secondarie
Quando si crea o si aggiorna un pool di nodi, specificare una o più interfacce di rete secondarie nel profilo di rete del pool di nodi. Il servizio Azure Kubernetes effettua il provisioning dei nodi con queste schede di interfaccia di rete aggiuntive collegate e ogni scheda di interfaccia di rete si connette alla subnet specificata.
"networkProfile": {
"secondaryNetworkInterfaces": [
{
"type": "Standard",
"vnetSubnetId": "<subnet-resource-id>"
}
]
}
2. Allocazione dinamica delle risorse (DRA)
L'allocazione dinamica delle risorse (DRA) è una funzionalità Kubernetes (GA in Kubernetes 1.34) che fornisce un framework per richiedere e gestire l'accesso alle risorse hardware. Nel contesto multi-NIC DRA gestisce il ciclo di vita delle interfacce di rete secondarie come dispositivi allocabili.
Si utilizzano le seguenti risorse DRA:
- DeviceClass : definisce una classe di dispositivi (schede di interfaccia di rete secondarie) pubblicati dal driver DRAnet, con selettori per filtrare i dispositivi corrispondenti.
- ResourceClaimTemplate : modello a cui fanno riferimento i pod per richiedere un numero specifico di schede di interfaccia di rete da una determinata classe di dispositivo.
3. Driver di rete DRAnet gestito
Il driver di rete DRAnet viene eseguito come DaemonSet in ogni nodo. IT:
- Individua tutte le interfacce di rete nel nodo.
- Pubblica le schede di interfaccia di rete secondarie disponibili come risorse del dispositivo DRA.
- Gestisce il collegamento e lo scollegamento delle NIC dagli spazi dei nomi di rete dei pod al momento della pianificazione dei pod.
Flusso end-to-end
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
- Versione di Kubernetes — Richiede Kubernetes 1.34 o versione successiva (per il supporto DRA GA).
- Ambito della rete virtuale : tutte le schede di interfaccia di rete secondarie devono connettersi alla stessa rete virtuale della scheda di interfaccia di rete primaria. È possibile collegarli a subnet diverse all'interno di tale rete virtuale.
- Assegnazione NIC : ogni scheda di interfaccia di rete secondaria può essere assegnata a un solo pod. Non è possibile condividere una scheda di interfaccia di rete secondaria tra più pod.
- DRANET supporta solo i pool di nodi Linux. I pool di nodi Windows non sono supportati.
- I criteri di rete vengono applicati solo sulla scheda di interfaccia di rete primaria. Il traffico che passa attraverso le NIC secondarie ignora l'applicazione dei criteri di rete di AKS.
-
Dimensioni della macchina virtuale : le dimensioni della macchina virtuale del pool di nodi devono supportare il numero totale di interfacce di rete (primaria e secondaria). Per verificare il numero massimo di interfacce di rete supportate e funzionalità di rete accelerata, vedere la documentazione sulle dimensioni delle macchine virtuali Azure o usare il
az vm list-skuscomando . Ecco un esempio:
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