Comment choisir des sous-réseaux d'adresses IP spécifiques pour les pods de mon cluster Amazon EKS ?
Je souhaite utiliser des sous-réseaux ou des plages d'adresses IP personnalisés pour mes pods dans Amazon Elastic Kubernetes Service (Amazon EKS).
Résolution
Pour attribuer des adresses IP de pod à partir de sous-réseaux différents de ceux des sous-réseaux de vos composants master, utilisez un réseau personnalisé.
Activer la mise en réseau personnalisée
Avant de configurer la mise en réseau personnalisée, vérifiez les comportements par défaut suivants :
- Les nœuds et les pods utilisent des adresses IP provenant des mêmes plages d'adresses CIDR dans votre cluster Amazon Virtual Private Cloud (VPC). Pour ajouter d'autres plages d'adresses IP CIDR à votre Amazon VPC, consultez la section Comment utiliser plusieurs plages d'adresses CIDR dans Amazon EKS ?
- Amazon EKS attribue des adresses IP aux pods depuis le sous-réseau du composant master.
- Vous ne pouvez pas déterminer quel sous-réseau attribue des adresses IP aux pods.
- Lorsqu'aucune adresse IP n'est disponible dans le sous-réseau d'un nœud, les nouveaux pods ne démarrent pas, même si d'autres sous-réseaux ont des adresses disponibles.
- L’intégralité du trafic des pods vers des adresses IP extérieures à l’Amazon VPC pour le bloc CIDR de votre cluster Amazon EKS utilise l'interface principale et l'adresse IP du nœud. Le trafic utilise des groupes de sécurité et un sous-réseau depuis l'interface réseau Elastic principale du nœud. Il n'utilise pas le sous-réseau et les groupes de sécurité que vous avez définis dans les objets ENIConfig.
- Si vous utilisez des groupes de sécurité pour les pods, ceux-ci utilisent le groupe de sécurité que vous avez spécifié dans votre SecurityGroupPolicy. Les pods n'utilisent pas le groupe de sécurité que vous avez spécifié dans les objets ENIConfig.
Remarque : Pour plus d'informations sur le routage du trafic des pods, consultez la section Activer l'accès Internet sortant pour les pods.
Activez la mise en réseau personnalisée dans le plug-in Amazon VPC Container Network Interface (Amazon VPC CNI) pour Kubernetes. Utilisez la version du plug-in Amazon VPC CNI qui correspond à votre version de Kubernetes. Pour accéder au plug-in, consultez la page amazon-vpc-cni-k8s sur le site Web de GitHub.
Exécutez la commande suivante pour vérifier la version dans votre mazon VPC pour le cluster Amazon EKS :
kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2
Si vous ne disposez pas de la version de plug-in appropriée, mettez à jour Amazon VPC CNI.
Exécutez la commande suivante pour activer la mise en réseau personnalisée :
kubectl set env daemonset aws-node -n kube-system AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true
VPC CNI v1.18 et les versions ultérieures prennent en charge la détection automatique de sous-réseaux et l'allocation dynamique d'adresses en fonction de l'utilisation des adresses IP sur les sous-réseaux disponibles. Pour plus d'informations, consultez la section Amazon VPC CNI introduit la détection améliorée des sous-réseaux.
Vous pouvez également utiliser le plug-in Amazon VPC CNI pour effectuer les opérations suivantes :
- Spécifier les sous-réseaux Amazon VPC à utiliser pour vos pods.
- Définir des groupes de sécurité distincts pour vos pods.
Créer des objets ENIconfig
Avant de créer vos objets ENIconfig, vérifiez les comportements par défaut suivants :
- Chaque objet ENIConfig définit un sous-réseau et une liste de groupes de sécurité.
- Vous ne pouvez attribuer qu'un seul objet ENIConfig à chaque nœud. Cependant, vous pouvez attribuer le même objet ENIConfig à plusieurs nœuds.
- Lorsque vous attribuez un objet ENIConfig à un nœud, les pods planifiés pour le nœud utilisent le sous-réseau et les groupes de sécurité de l'objet ENIConfig.
- Le nom de votre objet ENIConfig doit être celui de votre zone de disponibilité.
Exécutez la commande suivante pour créer vos objets ENIConfig :
cat EOF | kubectl apply -f - apiVersion: crd.k8s.amazonaws.com/v1alpha1 kind: ENIConfig metadata: name: example-availability-zone spec: securityGroups: - example-security-group-id subnet: example-subnet-id EOF
Remarque : Remplacez example-availability-zone par votre zone de disponibilité. Remplacez example-security-group-id par l'ID de votre groupe de sécurité. Remplacez example-subnet-id par l'ID de votre sous-réseau.
Attribuer des objets ENIconfig
Pour attribuer à un objet ENIConfig une zone de disponibilité, attribuez automatiquement des objets ENIConfig à vos nœuds. Pour associer plusieurs objets ENIConfig à la même zone de disponibilité, attribuez manuellement des objets ENIConfig à vos nœuds.
Attribuer automatiquement des objets ENIConfig
Exécutez la commande suivante :
kubectl set env daemonset aws-node -n kube-system ENI_CONFIG_LABEL_DEF=topology.kubernetes.io/zone
Associer manuellement des objets ENIConfig
Important : Assurez-vous que le nœud et le sous-réseau de l'objet ENIConfig associé se trouvent dans la même zone de disponibilité.
Exécutez la commande suivante :
kubectl annotate node example-node-name k8s.amazonaws.com/eniConfig=example-availability-zone
Remarque : Remplacez example-node-name par l'identifiant complet de votre nœud. Remplacez example-availability-zone par le nom de la zone de disponibilité que vous avez utilisé lors de la création de votre objet ENIConfig.
Lancer de nouveaux nœuds
Pour allouer des interfaces réseau secondaires et des adresses IP à partir des sous-réseaux ENIConfig, vous devez lancer de nouveaux nœuds. Les nœuds existants continuent à utiliser leur configuration réseau d'origine jusqu'à ce que vous les remplaciez.
Procédez comme suit :
- Vérifiez si vous utilisez un identifiant d’Amazon Machine Image (AMI) personnalisé avec votre groupe de nœuds autogéré.
- Si vous utilisez un ID AMI personnalisé, déterminez le nombre maximum de pods pour chaque valeur de nœud. Vous devez ajouter le paramètre --cni-custom-networking-enabled lorsque vous exécutez le script max-pods-calculator.sh.
Remarque : Si vous n'utilisez pas de modèle de lancement ni d'ID AMI, Amazon EKS définit automatiquement le nombre maximum de pods. - Mettez à jour le script de données utilisateur sur vos nouveaux nœuds afin d'utiliser votre nombre maximum de pods en fonction de votre système d'exploitation (OS) :
Amazon Linux 2, Bottlerocket, Ubuntu 20.04 et versions ultérieures, Windows Server 2019 et versions ultérieures#!/bin/bash /etc/eks/bootstrap.sh example-cluster-name --use-max-pods false --kubelet-extra-args '--max-pods=example-max-pods'
Remarque : Dans les commandes précédentes, remplacez example-cluster-name par le nom de votre cluster EKS. Remplacez example-max-pods par la valeur maximale de vos pods par nœud.--user-data '#!/bin/bash /etc/eks/nodeadm init \ --container-runtime containerd \ --cluster-name example-cluster-name \ --max-pods example-max-pods'
Pour plus d'informations sur bootstrap, consultez la page awslabs/amazon-eks-ami sur le site Web de GitHub. Pour plus d'informations sur nodeadm, consultez la section Mise à niveau d'Amazon Linux 2 vers Amazon Linux 2023.
Amazon Linux 2023 (AL2023) - Recréez vos pods pour utiliser votre nouvelle configuration réseau personnalisée.
- Sujets
- Containers
- Langue
- Français

Contenus pertinents
- demandé il y a 3 ans
- demandé il y a 2 mois
- demandé il y a 2 ans
- demandé il y a un an