Collegamento di interfacce di rete multiple ai pod - Amazon EKS

Contribuisci a migliorare questa pagina

Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.

Collegamento di interfacce di rete multiple ai pod

Per impostazione predefinita, il plugin CNI di Amazon VPC assegna un indirizzo IP a ciascun pod. Questo indirizzo IP è collegato a un’interfaccia di rete elastica che gestisce tutto il traffico in entrata e in uscita per il pod. Per aumentare le prestazioni della larghezza di banda e della velocità di pacchetti al secondo, è possibile utilizzare la funzionalità Multi-NIC di CNI di VPC per configurare un pod multi-homed. Un pod multi-homed è un singolo pod Kubernetes che utilizza più interfacce di rete (e più indirizzi IP). Eseguendo un pod multi-homed, è possibile distribuire il traffico delle applicazioni su più interfacce di rete utilizzando connessioni simultanee. Ciò è particolarmente utile per i casi d’uso di intelligenza artificiale (IA), machine learning (ML) e calcolo ad alte prestazioni (HPC).

Il diagramma seguente mostra un pod multi-homed in esecuzione su un nodo worker con più schede di interfaccia di rete (NIC) in uso.

Un pod multi-homed con due interfacce di rete collegate, un’interfaccia di rete con ENA e un’interfaccia di rete con ENA ed EFA

Contesto

Su Amazon EC2, un’interfaccia di rete elastica è un componente di rete logico in un VPC che rappresenta una scheda di rete virtuale. Per molti tipi di istanze EC2, le interfacce di rete condividono una singola scheda di interfaccia di rete (NIC) nell’hardware. Questa singola NIC ha una larghezza di banda e una velocità massime di pacchetti al secondo.

Se la funzionalità Multi-NIC è abilitata, CNI di VPC non assegna gli indirizzi IP in blocco, come avviene per impostazione predefinita. Invece, CNI di VPC assegna un indirizzo IP a un’interfaccia di rete su ciascuna scheda di rete su richiesta all’avvio di un nuovo pod. Tale comportamento riduce la velocità di esaurimento degli indirizzi IP, che è aumentata usando pod multi-homed. Poiché la CNI di VPC assegna l’indirizzo IP su richiesta, l’avvio dei pod potrebbe richiedere più tempo sulle istanze con la funzionalità multi-NIC abilitata.

Considerazioni

  • Assicurati che sul tuo cluster Kubernetes sia in esecuzione la versione 1.20.0 CNI di VPC e successive. La funzionalità multi-NIC è disponibile solo nella versione 1.20.0 o successiva di CNI di VPC.

  • Abilita la variabile di ambiente ENABLE_MULTI_NIC nel plugin CNI di VPC. Per impostare la variabile e avviare un’implementazione di DaemOnset è possibile eseguire il seguente comando.

    • kubectl set env daemonset aws-node -n kube-system ENABLE_MULTI_NIC=true

  • Assicurati di creare nodi worker con più schede di interfaccia di rete (NIC). Per un elenco di istanze EC2 con più schede di interfaccia di rete, consulta Schede di rete nella Guida per l’utente di Amazon EC2.

  • Se la funzionalità Multi-NIC è abilitata, CNI di VPC non assegna gli indirizzi IP in blocco, come avviene per impostazione predefinita. Poiché la CNI di VPC assegna l’indirizzo IP su richiesta, l’avvio dei pod potrebbe richiedere più tempo sulle istanze con la funzionalità multi-NIC abilitata. Per ulteriori informazioni, consulta la sezione Contesto precedente.

  • Con la funzionalità multi-NIC abilitata, per impostazione predefinita i pod non dispongono di più interfacce di rete. È necessario configurare ciascun carico di lavoro per utilizzare multi-NIC. Aggiungi l’annotazione k8s.amazonaws.com/nicConfig: multi-nic-attachment ai carichi di lavoro che dovrebbero avere più interfacce di rete.

Considerazioni su IPv6

  • Policy IAM personalizzata: per i cluster IPv6, crea e utilizza la seguente policy IAM personalizzata per CNI di VPC. Questa policy è specifica per multi-NIC. Per informazioni più generali sull’utilizzo di CNI di VPC con i cluster IPv6, consulta Informazioni sugli indirizzi IPv6 per cluster, pod e servizi.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AmazonEKSCNIPolicyIPv6MultiNIC", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeInstances", "ec2:AssignIpv6Addresses", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeTags", "ec2:ModifyNetworkInterfaceAttribute", "ec2:DeleteNetworkInterface", "ec2:DescribeInstanceTypes", "ec2:UnassignIpv6Addresses", "ec2:AttachNetworkInterface", "ec2:DescribeSubnets" ], "Resource": "*" }, { "Sid": "AmazonEKSCNIPolicyENITagIPv6MultiNIC", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:network-interface/*" } ] }
  • IPv6 Meccanismo di transizione non disponibile: se si utilizza la funzionalità multi-NIC, CNI di VPC non assegna un indirizzo IPv4 ai pod di un cluster IPv6. Altrimenti, CNI di VPC assegna un indirizzo IPv4 host locale a ciascun pod in modo che un pod possa comunicare con risorse esterne IPv4 in un altro Amazon VPC o su Internet.

Utilizzo

Dopo aver abilitato la funzionalità multi-NIC nel CNI di VPC e riavviato i pod aws-node, è possibile configurare ciascun carico di lavoro in modo che sia multi-homed. Il seguente esempio di una configurazione YAML con l’annotazione richiesta:

apiVersion: apps/v1 kind: Deployment metadata: name: orders-deployment namespace: ecommerce labels: app: orders spec: replicas: 3 selector: matchLabels: app: orders template: metadata: annotations: k8s.amazonaws.com/nicConfig: multi-nic-attachment labels: app: orders spec: ...

Domande frequenti

1. Cos’è una scheda di interfaccia di rete (NIC)?

Una scheda di interfaccia di rete (NIC), chiamata anche semplicemente scheda di rete, è un dispositivo fisico che consente la connettività di rete per l’hardware di cloud computing sottostante. Nei moderni server EC2, si riferisce alla scheda di rete Nitro. Un’interfaccia di rete elastica (ENI) è una rappresentazione virtuale di questa scheda di rete sottostante.

Alcuni tipi di istanze EC2 dispongono di più NIC per prestazioni superiori in termini di larghezza di banda e velocità di pacchetti. In questi casi, è possibile assegnare ENI secondarie alle schede di rete aggiuntive. Ad esempio, ENI #1 può funzionare come interfaccia per la NIC collegata all’indice 0 della scheda di rete, mentre ENI #2 può funzionare come interfaccia per la NIC collegata a un indice di schede di rete separato.

2. Cos’è un pod multi-homed?

Un pod multi-homed è un singolo pod Kubernetes con più interfacce di rete (e per implicazione più indirizzi IP). Ciascun interfaccia di rete di pod è associata a un’interfaccia di rete elastica (ENI) e tali ENI sono rappresentazioni logiche di NIC separate sul nodo worker sottostante. Con più interfacce di rete, un pod multi-homed ha una capacità di trasferimento dati aggiuntiva, che aumenta anche la velocità di trasferimento dei dati.

Importante

CNI di VPC può configurare pod multi-homed solo su tipi di istanze con più NIC.

3. Qual è il vantaggio di utilizzare questa funzionalità?

Se è necessario scalare le prestazioni di rete nei carichi di lavoro basati su Kubernetes, è possibile utilizzare la funzionalità multi-NIC per eseguire pod multi-homed che si interfacciano con tutte le NIC sottostanti a cui è collegato un dispositivo ENA. L’utilizzo di schede di rete aggiuntive aumenta la capacità di larghezza di banda e le prestazioni di velocità di pacchetti nelle applicazioni distribuendo il traffico delle applicazioni su più connessioni simultanee. Ciò è particolarmente utile per i casi d’uso di intelligenza artificiale (IA), machine learning (ML) e calcolo ad alte prestazioni (HPC).

4. Come posso utilizzare questa funzionalità?

  1. Innanzitutto, è necessario assicurarsi che il proprio cluster Kubernetes utilizzi versione 1.20 o successiva di CNI di VPC. Per i passaggi per aggiornare CNI di VPC come componente aggiuntivo EKS, consulta Aggiornamento di CNI di Amazon VPC (componente aggiuntivo Amazon EKS).

  2. Quindi, è necessario abilitare il supporto multi-NIC nel CNI di VPC usando la variabile di ambiente ENABLE_MULTI_NIC.

  3. Quindi, è necessario assicurarsi di creare e unire nodi con più schede di rete. Per un elenco dei tipi di istanze EC2 con più schede di rete, consulta Schede di rete nella Guida per l’utente di Amazon EC2.

  4. Infine, configura ciascun carico di lavoro per utilizzare più interfacce di rete (pod multi-homed) o utilizza un’unica interfaccia di rete.

5. Come posso configurare i miei carichi di lavoro per utilizzare più NIC su un nodo worker supportato?

Per utilizzare i pod multi-homed, è necessario aggiungere la seguente annotazione: k8s.amazonaws.com/nicConfig: multi-nic-attachment. Ciò collegherà un’ENI da ciascuna NIC nell’istanza sottostante al pod (mappatura da uno a più tra un pod e le NIC).

Se manca questa annotazione, CNI di VPC presuppone che il pod richieda solo 1 interfaccia di rete e gli assegna un IP da un’ENI su qualsiasi NIC disponibile.

6. Quali adattatori di interfaccia di rete sono supportati da questa funzionalità?

È possibile utilizzare qualsiasi adattatore di interfaccia di rete se si dispone di almeno un ENA collegato alla scheda di rete sottostante per il traffico IP. Per ulteriori informazioni, consulta Adattatore elastico di rete (ENA) nella Guida per l’utente di Amazon EC2.

Configurazioni dei dispositivi di rete supportate:

  • Le interfacce ENA offrono tutte le tradizionali funzionalità di rete e routing IP necessarie per supportare la rete IP per un VPC. Per ulteriori informazioni, consulta Abilitazione delle reti avanzate con ENI su istanze EC2.

  • Le interfacce EFA (EFA con ENA) offrono sia il dispositivo ENA per le reti IP che il dispositivo EFA per le comunicazioni a bassa latenza e a throughput elevato.

Importante

Se a una scheda di rete è collegato un adattatore solo EFA, il CNI di VPC lo ignorerà durante il provisioning della connettività di rete per un pod multi-homed. Tuttavia, se si combina un adattatore solo EFA con un adattatore ENA su una scheda di rete, CNI di VPC gestirà anche le ENI su questo dispositivo. Per utilizzare interfacce solo EFA con i cluster EKS, consulta Esecuzione dei corsi di machine learning su Amazon EKS con Elastic Fabric Adapter.

7. Posso vedere se un nodo del mio cluster supporta ENA?

Sì, puoi utilizzare AWS CLI o API EC2 per recuperare informazioni di rete su un’istanza EC2 nel cluster. Ciò fornisce dettagli sul fatto che l’istanza disponga o meno del supporto ENA. Nell’esempio seguente, sostituisci <your-instance-id> con l’ID di istanza EC2 di un nodo.

Esempi di AWS CLI:

aws ec2 describe-instances --instance-ids <your-instance-id> --query "Reservations[].Instances[].EnaSupport"

Output di esempio:

[ true ]

8. Posso vedere i diversi indirizzi IP associati a un pod?

No, non è semplice. Tuttavia, è possibile utilizzare nsenter dal nodo per eseguire strumenti di rete comuni come ip route show e visualizzare gli indirizzi IP e le interfacce aggiuntivi.

9. Posso controllare il numero di interfacce di rete per i miei pod?

No. Quando il carico di lavoro è configurato per utilizzare più NIC su un’istanza supportata, un singolo pod ha automaticamente un indirizzo IP da ciascuna scheda di rete sull’istanza. In alternativa, i pod single-homed avranno un’interfaccia di rete collegata a una NIC sull’istanza.

Importante

Le schede di rete a cui è collegato solo un dispositivo solo EFA sono ignorate da CNI di VPC.

10. Posso configurare i miei pod per utilizzare una scheda NIC specifica?

No, questa funzionalità non è supportata. Se un pod ha l’annotazione pertinente, CNI di VPC lo configura automaticamente per utilizzare ogni NIC con un adattatore ENA sul nodo worker.

11. Questa funzionalità funziona con le altre funzionalità di rete di CNI di VPC?

Sì, la funzionalità multi-NIC di CNI di VPC funziona sia con reti personalizzate che con la rilevazione avanzata delle sottoreti. Tuttavia, i pod multi-homed non utilizzano sottoreti o gruppi di sicurezza personalizzati. Invece, CNI di VPC assegna indirizzi IP e interfacce di rete ai pod multi-homed con la stessa configurazione di sottorete e gruppo di sicurezza del nodo. Per ulteriori informazioni sulle reti personalizzate, consulta Implementazione dei pod in sottoreti alternative con reti personalizzate.

La funzionalità multi-NIC di CNI di VPC non funziona e non può essere combinata con i gruppi di sicurezza per i pod.

12. Posso utilizzare le politiche di rete con questa funzionalità?

Sì, è possibile utilizzare le policy di rete Kubernetes con multi-NIC. Le policy di rete Kubernetes limitano il traffico di rete verso e dai pod. Per ulteriori informazioni sull’applicazione delle policy di rete con CNI di VPC, consulta Limita il traffico di Pod con le policy di rete di Kubernetes.

13. Il supporto multi-NIC è abilitato in modalità automatica EKS?

La multi-NIC non è supportata per i cluster in modalità automatica EKS.