Connecter plusieurs interfaces réseau à des pods - Amazon EKS

Aidez à améliorer cette page

Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.

Connecter plusieurs interfaces réseau à des pods

Par défaut, le plug-in CNI Amazon VPC attribue une adresse IP à chaque pod. Cette adresse IP est associée à une interface réseau Elastic qui gère tout le trafic entrant et sortant du pod. Pour augmenter la bande passante et le débit de paquets par seconde, vous pouvez utiliser la fonctionnalité multi-NIC de CNI VPC pour configurer un pod multi-homed. Un pod multi-homed est un pod Kubernetes unique qui utilise plusieurs interfaces réseau (et plusieurs adresses IP). En exécutant un pod multi-homed, vous pouvez répartir le trafic de son application sur plusieurs interfaces réseau à l’aide de connexions simultanées. Cela est particulièrement utile pour les cas d’utilisation de l’intelligence artificielle (IA), de machine learning (ML) et du calcul haute performance (HPC).

Le diagramme suivant montre un pod multi-homed s’exécutant sur un composant master avec plusieurs cartes d’interface réseau (NIC) utilisées.

Un pod multi-homed avec deux interfaces réseau connectées : une interface réseau avec ENA et une interface réseau avec ENA et EFA

Contexte

Sur Amazon EC2, une interface réseau Elastic est un composant réseau logique dans un VPC qui représente une carte réseau virtuelle. Pour de nombreux types d’instances EC2, les interfaces réseau partagent une seule carte d’interface réseau (NIC) dans le matériel. Cette carte réseau unique dispose d’une bande passante maximale et d’un débit maximal de paquets par seconde.

Si la fonctionnalité multi-NIC est activée, le CNI VPC n’attribue pas d’adresses IP en masse, comme il le fait par défaut. Au lieu de cela, le CNI VPC attribue une adresse IP à une interface réseau sur chaque carte réseau à la demande lorsqu’un nouveau pod démarre. Ce comportement réduit le taux d’épuisement des adresses IP, qui est augmenté par l’utilisation de pods multi-homed. Étant donné que le CNI VPC attribue des adresses IP à la demande, le démarrage des pods peut prendre plus de temps sur les instances où la fonctionnalité multi-NIC est activée.

Considérations

  • Veuillez vous assurer que votre cluster Kubernetes exécute la version 1.20.0 ou ultérieure du CNI VPC. La fonctionnalité multi-NIC n’est disponible que dans la version 1.20.0 ou ultérieure du CNI VPC.

  • Activez la variable d’environnement ENABLE_MULTI_NIC dans le plug-in CNI Amazon VPC. Vous pouvez exécuter la commande suivante pour définir la variable et démarrer un déploiement du DaemonSet.

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

  • Assurez-vous de créer des composants master disposant de plusieurs cartes d’interface réseau (NIC). Pour obtenir la liste des instances EC2 disposant de plusieurs cartes d’interface réseau, consultez Cartes réseau dans le Guide de l’utilisateur Amazon EC2.

  • Si la fonctionnalité multi-NIC est activée, le CNI VPC n’attribue pas d’adresses IP en masse, comme il le fait par défaut. Étant donné que le CNI VPC attribue des adresses IP à la demande, le démarrage des pods peut prendre plus de temps sur les instances où la fonctionnalité multi-NIC est activée. Pour de plus amples informations, veuillez consulter la section précédente Contexte.

  • Lorsque la fonctionnalité multi-NIC est activée, les pods ne disposent pas de plusieurs interfaces réseau par défaut. Vous devez configurer chaque charge de travail pour utiliser la fonctionnalité multi-NIC. Ajoutez l’annotation k8s.amazonaws.com/nicConfig: multi-nic-attachment aux charges de travail qui doivent disposer de plusieurs interfaces réseau.

Considérations relatives à IPv6

  • Politique IAM personnalisée : pour les clusters IPv6, créez et utilisez la politique IAM personnalisée suivante pour le CNI VPC. Cette politique est spécifique à la fonctionnalité multi-NIC. Pour plus d’informations générales sur l’utilisation du CNI VPC avec les clusters IPv6, consultez Informations sur les adresses IPv6 pour les clusters, pods et services.

    { "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/*" } ] }
  • Mécanisme de transition IPv6 non disponible : si vous utilisez la fonctionnalité multi-NIC, le CNI VPC n’attribue pas d’adresse IPv4 aux pods d’un cluster IPv6. Sinon, le CNI Amazon VPC attribue une adresse IPv4 locale à chaque pod afin que celui-ci puisse communiquer avec des ressources IPv4 externes dans un autre Amazon VPC ou sur Internet.

Utilisation

Une fois la fonctionnalité multi-NIC activée dans le CNI Amazon VPC et les pods aws-node redémarrés, vous pouvez configurer chaque charge de travail pour qu’elle soit multi-homed. Voici un exemple de configuration YAML avec l’annotation requise :

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: ...

Questions fréquentes (FAQ)

1. Qu’est-ce qu’une carte d’interface réseau (NIC) ?

Une carte d’interface réseau (NIC), également appelée simplement carte réseau, est un périphérique physique qui permet la connectivité réseau pour le matériel informatique cloud sous-jacent. Dans les serveurs EC2 modernes, il s’agit de la carte réseau Nitro. Une interface réseau Elastic (ENI) est une représentation virtuelle de cette carte réseau sous-jacente.

Certains types d’instances EC2 disposent de plusieurs cartes NIC pour une bande passante et un débit de paquets plus élevés. Pour ces instances, vous pouvez attribuer des ENI secondaires aux cartes réseau supplémentaires. Par exemple, l’ENI n° 1 peut fonctionner comme interface pour la carte NIC connectée à l’index de carte réseau 0, tandis que l’ENI n° 2 peut fonctionner comme interface pour la carte NIC connectée à un index de carte réseau distinct.

2. Qu’est-ce qu’un pod multi-homed ?

Un pod multi-homed est un pod Kubernetes unique doté de plusieurs interfaces réseau (et donc de plusieurs adresses IP). Chaque interface réseau du pod est associée à une interface réseau Elastic (ENI), et ces ENI sont des représentations logiques de cartes réseau distinctes sur le composant master sous-jacent. Grâce à ses multiples interfaces réseau, un pod multi-homed dispose d’une capacité de transfert de données supplémentaire, ce qui augmente également son débit de transfert de données.

Important

Le CNI VPC ne peut configurer des pods multi-homed que sur des types d’instances disposant de plusieurs cartes réseau.

3. Pourquoi utiliser cette fonctionnalité ?

Si vous avez besoin d’adapter les performances réseau de vos charges de travail basées sur Kubernetes, vous pouvez utiliser la fonctionnalité multi-NIC pour exécuter des pods multi-homed qui s’interfacent avec toutes les cartes réseau sous-jacentes auxquelles un périphérique ENA est connecté. L’utilisation de cartes réseau supplémentaires augmente la capacité de bande passante et les performances en termes de débit de paquets dans vos applications en répartissant le trafic des applications sur plusieurs connexions simultanées. Cela est particulièrement utile pour les cas d’utilisation de l’intelligence artificielle (IA), de machine learning (ML) et du calcul haute performance (HPC).

4. Comment utiliser cette fonctionnalité ?

  1. Tout d’abord, vous devez vous assurer que votre cluster Kubernetes utilise la version 1.20 ou ultérieure de CNI VPC. Pour connaître les étapes de mise à jour de CNI VPC en tant que module complémentaire EKS, consultez Mettre à jour le CNI Amazon VPC (module complémentaire Amazon EKS).

  2. Ensuite, vous devez activer la prise en charge multi-NIC dans le CNI Amazon VPC à l’aide de la variable d’environnement ENABLE_MULTI_NIC.

  3. Enfin, vous devez vous assurer de créer et de rejoindre des nœuds disposant de plusieurs cartes réseau. Pour obtenir la liste des types d’instances EC2 disposant de plusieurs cartes réseau, consultez Cartes réseau dans le Guide de l’utilisateur Amazon EC2.

  4. Enfin, vous devez configurer chaque charge de travail pour qu’elle utilise soit plusieurs interfaces réseau (pods multi-homed), soit une seule interface réseau.

5. Comment puis-je configurer mes charges de travail pour qu’elles utilisent plusieurs cartes réseau sur un composant master pris en charge ?

Pour utiliser des pods multi-homed, vous devez ajouter l’annotation suivante : k8s.amazonaws.com/nicConfig: multi-nic-attachment. Cela permettra de connecter une ENI de chaque carte réseau de l’instance sous-jacente au pod (mappage un-à-plusieurs entre un pod et les cartes réseau).

Si cette annotation est manquante, le CNI VPC suppose que votre pod ne nécessite qu’une seule interface réseau et lui attribue une adresse IP provenant d’une ENI sur n’importe quelle carte réseau disponible.

6. Quels adaptateurs d’interface réseau sont pris en charge avec cette fonctionnalité ?

Vous pouvez utiliser n’importe quel adaptateur d’interface réseau si vous disposez d’au moins un ENA connecté à la carte réseau sous-jacente pour le trafic IP. Pour plus d’informations sur ENA, consultez Adaptateur réseau élastique (ENA) dans le Guide de l’utilisateur Amazon EC2.

Configurations de périphériques réseau prises en charge :

  • les interfaces ENA fournissent toutes les fonctionnalités de réseau et de routage IP traditionnelles requises pour prendre en charge le réseau IP d’un VPC. Pour plus d’informations, consultez Activer la mise en réseau améliorée avec ENA sur vos instances EC2.

  • Les interfaces EFA (EFA avec ENA) fournissent à la fois le périphérique ENA pour la mise en réseau IP et le périphérique EFA pour une communication à faible latence et haut débit.

Important

Si une carte réseau ne dispose que d’un adaptateur EFA uniquement attaché, le CNI VPC l’ignorera lors de la fourniture d’une connectivité réseau pour un pod multi-hébergé. Toutefois, si vous combinez un adaptateur EFA uniquement avec un adaptateur ENA sur une carte réseau, le CNI VPC gérera également les ENI sur ce périphérique. Pour utiliser des interfaces EFA uniquement avec des clusters EKS, consultez Exécuter un entraînement de machine learning sur Amazon EKS avec Elastic Fabric Adapter.

7. Puis-je voir si un nœud de mon cluster prend en charge ENA ?

Oui, vous pouvez utiliser l’interface AWS CLI ou l’API EC2 pour récupérer les informations réseau relatives à une instance EC2 de votre cluster. Cela vous permettra de savoir si l’instance prend en charge ENA. Dans l’exemple suivant, remplacez <your-instance-id> par l’ID d’instance EC2 d’un nœud.

Exemple de commande AWS CLI :

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

Exemple de sortie :

[ true ]

8. Puis-je voir les différentes adresses IP associées à un pod ?

Non, pas facilement. Cependant, vous pouvez utiliser nsenter à partir du nœud pour exécuter des outils réseau courants tels que ip route show et voir les adresses IP et les interfaces supplémentaires.

9. Puis-je contrôler le nombre d’interfaces réseau pour mes pods ?

Non. Lorsque votre charge de travail est configurée pour utiliser plusieurs cartes réseau sur une instance prise en charge, un seul pod dispose automatiquement d’une adresse IP provenant de chaque carte réseau de l’instance. Sinon, les pods à connexion unique disposeront d’une interface réseau connectée à une carte réseau sur l’instance.

Important

Les cartes réseau auxquelles seul un périphérique EFA uniquement est connecté sont ignorées par le CNI VPC.

10. Puis-je configurer mes pods pour qu’ils utilisent une carte réseau spécifique ?

Non, cela n’est pas pris en charge. Si un pod dispose de l’annotation appropriée, le CNI VPC le configure automatiquement pour utiliser toutes les cartes réseau avec un adaptateur ENA sur le composant master.

11. Cette fonctionnalité est-elle compatible avec les autres fonctionnalités réseau du CNI VPC ?

Oui, la fonctionnalité multi-cartes réseau du CNI VPC est compatible avec le réseau personnalisé et la détection améliorée des sous-réseaux. Cependant, les pods multi-homed n’utilisent pas les sous-réseaux personnalisés ni les groupes de sécurité. Au lieu de cela, le CNI VPC attribue des adresses IP et des interfaces réseau aux pods multi-homed avec la même configuration de sous-réseau et de groupe de sécurité que le nœud. Pour plus d’informations sur la mise en réseau personnalisée, consultez Déploiement de pods dans des sous-réseaux alternatifs avec réseau personnalisé.

La fonctionnalité multi-NIC du CNI VPC ne fonctionne pas avec les groupes de sécurité pour les pods et ne peut pas être combinée avec ceux-ci.

12. Puis-je utiliser des politiques réseau avec cette fonctionnalité ?

Oui, vous pouvez utiliser les politiques réseau Kubernetes avec plusieurs cartes réseau. Les politiques réseau Kubernetes limitent le trafic réseau vers et depuis vos pods. Pour plus d’informations sur l’application des politiques réseau avec le CNI VPC EKS, consultez Limitation du trafic des pods à l’aide des politiques réseau Kubernetes.

13. La prise en charge de plusieurs cartes réseau est-elle activée dans le mode automatique EKS ?

Plusieurs cartes réseau ne sont pas prises en charge pour les clusters du mode automatique EKS.