Augmentez le nombre d'adresses IP disponibles pour votre EKS nœud Amazon - Amazon EKS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Augmentez le nombre d'adresses IP disponibles pour votre EKS nœud Amazon

Vous pouvez augmenter le nombre d'adresses IP que les nœuds peuvent attribuer Pods en attribuant des préfixes IP, plutôt que d'attribuer des adresses IP secondaires individuelles à vos nœuds.

Avant de commencer la procédure, procédez comme suit :

  • Passez en revue les considérations.

  • Vous avez besoin d'un cluster existant. Pour en déployer un, consultez Création d'un EKS cluster Amazon.

  • Les sous-réseaux dans lesquels se trouvent vos EKS nœuds Amazon doivent comporter suffisamment de blocs contigus /28 (pour les IPv4 clusters) ou /80 (pour les IPv6 clusters) de routage interdomaines sans classe (). CIDR Vous ne pouvez avoir que des nœuds Linux dans un cluster IPv6. L'utilisation de préfixes IP peut échouer si les adresses IP sont dispersées dans le CIDR sous-réseau. Nous vous recommandons la procédure suivante :

    • Utiliser une CIDR réservation de sous-réseau afin que même si des adresses IP comprises dans la plage réservée sont toujours utilisées, elles ne soient pas réattribuées lors de leur publication. Cela permet de s'assurer que les préfixes sont disponibles pour l'allocation sans segmentation.

    • Utilisez de nouveaux sous-réseaux spécifiquement utilisés pour exécuter les charges de travail auxquelles les préfixes IP sont attribués. les deux Windows and Linux les charges de travail peuvent s'exécuter dans le même sous-réseau lors de l'attribution de préfixes IP.

  • Pour attribuer des préfixes IP à vos nœuds, ceux-ci doivent être basés sur AWS Nitro. Les instances qui ne sont pas basées sur Nitro continuent d'allouer des adresses IP secondaires individuelles, mais ont un nombre nettement inférieur d'adresses IP à attribuer Pods que Nitro-based les instances le font.

  • Pour les clusters avec Linux nœuds uniquement  : si votre cluster est configuré pour la IPv4 famille, vous devez disposer de la version 1.9.0 ou d'une version ultérieure du Amazon VPC CNI plugin for Kubernetes module complémentaire installé. Vous pouvez vérifier votre version actuelle à l'aide de la commande suivante.

    kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

    Si votre cluster est configuré pour la famille IPv6, la version 1.10.1 du module complémentaire doit être installée. Si la version de votre plugin est antérieure aux versions requises, vous devez la mettre à jour. Pour plus d'informations, consultez les sections de mise à jour d'Assign IPs to Pods with the Amazon VPC CNI.

  • Pour les clusters avec Windows nœuds uniquement  :

    • La version de votre cluster et de sa plateforme doit être égale ou ultérieure aux versions indiquées dans le tableau suivant. Pour mettre à jour la version de votre cluster, consultez Mettre à jour le cluster existant vers la nouvelle version de Kubernetes. Si votre cluster ne dispose pas de la version minimale de la plate-forme, vous ne pouvez pas attribuer de préfixes IP à vos nœuds tant qu'Amazon n'EKSa pas mis à jour la version de votre plate-forme.

      Version de Kubernetes Version de la plateforme

      1.27

      eks.3

      1.26

      eks.4

      1.25

      eks.5

      Vous pouvez vérifier votre Kubernetes et version de la plateforme en remplaçant my-cluster dans la commande suivante avec le nom de votre cluster, puis exécutez la commande modifiée :aws eks describe-cluster --name my-cluster --query 'cluster.{"Kubernetes Version": version, "Platform Version": platformVersion}'.

    • Windows support activé pour votre cluster. Pour de plus amples informations, veuillez consulter Déployer des nœuds Windows sur EKS des clusters.

      1. Configurez votre cluster pour attribuer des préfixes d'adresses IP aux nœuds. Suivez la procédure dans l'onglet correspondant au système d'exploitation de votre nœud.

        Linux
        1. Activez le paramètre pour attribuer des préfixes aux interfaces réseau pour Amazon VPC CNI DaemonSet. Lorsque vous déployez un cluster 1.21 ou une version ultérieure, une version 1.10.1 ou une version ultérieure du Amazon VPC CNI plugin for Kubernetes le module complémentaire est déployé avec celui-ci. Si vous avez créé le cluster avec la famille IPv6, ce paramètre a été réglé sur true par défaut. Si vous avez créé le cluster avec la famille IPv4, ce paramètre a été réglé sur false par défaut.

          kubectl set env daemonset aws-node -n kube-system ENABLE_PREFIX_DELEGATION=true
          Important

          Même si les adresses IP de votre sous-réseau sont disponibles, si aucun /28 bloc contigu n'est disponible sur le sous-réseau, vous verrez le message d'erreur suivant dans Amazon VPC CNI plugin for Kubernetes journaux.

InsufficientCidrBlocks: The specified subnet does not have enough free cidr blocks to satisfy the request

Cela peut se produire en raison de la fragmentation des adresses IP secondaires existantes réparties sur un sous-réseau. Pour résoudre cette erreur, créez un nouveau sous-réseau et lancez Pods là, ou utilisez une CIDR réservation de EC2 sous-réseau Amazon pour réserver de l'espace au sein d'un sous-réseau à utiliser pour l'attribution de préfixes. Pour plus d'informations, consultez la section CIDRRéservations de sous-réseaux dans le guide de VPC l'utilisateur Amazon. ... Si vous envisagez de déployer un groupe de nœuds gérés sans modèle de lancement, ou avec un modèle de lancement dans lequel vous n'avez pas spécifié d'AMIidentifiant, et que vous utilisez une version du Amazon VPC CNI plugin for Kubernetes au plus tard dans les versions répertoriées dans les prérequis, puis passez à l'étape suivante. Les groupes de nœuds gérés calculent automatiquement le nombre maximum de Pods pour toi.

+ Si vous déployez un groupe de nœuds autogéré ou un groupe de nœuds gérés avec un modèle de lancement dans lequel vous avez spécifié un AMI identifiant, vous devez déterminer le nombre maximum EKS recommandé par Amazon Pods pour vos nœuds. Suivez les instructions indiquées dans le nombre maximal de pods EKS recommandé EC2 par Amazon pour chaque type d'instance Amazon, en ajoutant --cni-prefix-delegation-enabled à l'étape 3. Notez la sortie pour une utilisation ultérieure.

+ IMPORTANT : les groupes de nœuds gérés imposent un nombre maximum à la valeur demaxPods. Pour les instances de moins de 30, vCPUs le nombre maximum est de 110 et pour toutes les autres instances, le nombre maximum est de 250. Ce nombre maximal est appliqué que la délégation du préfixe soit activée ou non. ... Si vous utilisez un cluster 1.21 ou une version ultérieure configurée pourIPv6, passez à l'étape suivante.

+ Spécifiez les paramètres dans l'une des options suivantes. Pour déterminer quelle option vous convient le mieux et quelle valeur lui fournir, consultez WARM_ _, PREFIX _IP_ TARGET et WARM MINIMUM _IP_ TARGET sur TARGET GitHub.

+ Vous pouvez remplacer example values avec une valeur supérieure à zéro.

+ ** WARM_PREFIX_TARGET

+

kubectl set env ds aws-node -n kube-system WARM_PREFIX_TARGET=1
  • WARM_IP_TARGET ou MINIMUM_IP_TARGET : si l'une ou l'autre des valeurs est définie, elle remplace toute valeur définie pour WARM_PREFIX_TARGET.

    kubectl set env ds aws-node -n kube-system WARM_IP_TARGET=5
kubectl set env ds aws-node -n kube-system MINIMUM_IP_TARGET=2
  1. Créez l'un des types de groupes de nœuds suivants avec au moins un type d'instance Amazon EC2 Nitro Amazon Linux 2. Pour obtenir la liste des types d'instances Nitro, consultez la section Instances créées sur le système Nitro dans le guide de EC2 l'utilisateur Amazon. Cette fonctionnalité n'est pas prise en charge sur Windows. Pour les options qui incluent 110, remplacez-le soit par la valeur de l'étape 3 (recommandé), soit par votre propre valeur.

    • Autogéré : déployez le groupe de nœuds en suivant les instructions de la section Créer des nœuds Amazon Linux autogérés. Spécifiez le texte suivant pour le BootstrapArgumentsparamètre.

      --use-max-pods false --kubelet-extra-args '--max-pods=110'

      Si vous utilisez eksctl pour créer le groupe de nœuds, vous pouvez utiliser la commande suivante.

      eksctl create nodegroup --cluster my-cluster --managed=false --max-pods-per-node 110
    • Géré : déployez votre groupe de nœuds à l'aide de l'une des options suivantes :

      • Sans modèle de lancement ou avec un modèle de lancement sans AMI identifiant spécifié : suivez la procédure décrite dans Créer un groupe de nœuds gérés pour votre cluster. Les groupes de nœuds gérés calculent automatiquement pour vous la max-pods valeur EKS recommandée par Amazon.

      • Avec un modèle de lancement avec un AMI identifiant spécifique — Dans votre modèle de lancement, spécifiez un AMI identifiant EKS optimisé pour Amazon ou un identifiant personnalisé AMI créé à partir de l'identifiant Amazon EKS optimiséAMI, puis déployez le groupe de nœuds à l'aide d'un modèle de lancement et fournissez les données utilisateur suivantes dans le modèle de lancement. Ces données utilisateur transmettent des arguments dans le fichier bootstrap.sh. Pour plus d'informations sur le fichier bootstrap, consultez le fichier bootstrap.sh sur GitHub.

        /etc/eks/bootstrap.sh my-cluster \ --use-max-pods false \ --kubelet-extra-args '--max-pods=110'

        Si vous utilisez eksctl pour créer le groupe de nœuds, vous pouvez utiliser la commande suivante.

        eksctl create nodegroup --cluster my-cluster --max-pods-per-node 110

        Si vous avez créé une configuration personnalisée AMI qui n'est pas basée sur Amazon EKS OptimizedAMI, vous devez créer vous-même la configuration personnalisée.

        Note

        Si vous souhaitez également attribuer des adresses IP à Pods à partir d'un sous-réseau différent de celui de l'instance, vous devez activer la fonctionnalité à cette étape. Pour de plus amples informations, veuillez consulter Déploiement pods dans des sous-réseaux alternatifs avec mise en réseau personnalisée.

        Windows
  2. Activez l'attribution de préfixes IP.

    1. Ouvrez le amazon-vpc-cni ConfigMap pour le modifier.

      kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
    2. Ajoutez les lignes suivantes à la section data.

      enable-windows-prefix-delegation: "true"
    3. Enregistrez le fichier et fermez l'éditeur.

    4. Confirmez que la ligne a été ajoutée à la ConfigMap.

      kubectl get configmap -n kube-system amazon-vpc-cni -o "jsonpath={.data.enable-windows-prefix-delegation}"

      Si le résultat renvoyé ne l'est pastrue, il se peut qu'il y ait eu une erreur. Essayez à nouveau d'effectuer l'étape.

      Important

      Même si votre sous-réseau a des adresses IP disponibles, si le sous-réseau n'a pas de blocs contigus /28 disponibles, vous verrez le message d'erreur suivant dans les événements du nœud.

"failed to allocate a private IP/Prefix address: InsufficientCidrBlocks: The specified subnet does not have enough free cidr blocks to satisfy the request"

Cela peut se produire en raison de la fragmentation des adresses IP secondaires existantes réparties sur un sous-réseau. Pour résoudre cette erreur, créez un nouveau sous-réseau et lancez Pods là, ou utilisez une CIDR réservation de EC2 sous-réseau Amazon pour réserver de l'espace au sein d'un sous-réseau à utiliser pour l'attribution de préfixes. Pour plus d'informations, consultez la section CIDRRéservations de sous-réseaux dans le guide de VPC l'utilisateur Amazon. ... (Facultatif) Spécifiez une configuration supplémentaire pour contrôler le comportement de pré-dimensionnement et de dimensionnement dynamique de votre cluster. Pour plus d'informations, consultez la section Options de configuration avec le mode de délégation de préfixes sous Windows activé GitHub.

+... Ouvrez le amazon-vpc-cni ConfigMap pour le modifier.

+

kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
  1. Remplacez le example values avec une valeur supérieure à zéro et ajoutez les entrées dont vous avez besoin à la data section duConfigMap. Si vous définissez une valeur pour warm-ip-target ou minimum-ip-target, la valeur remplace toute valeur définie pour warm-prefix-target.

    warm-prefix-target: "1" warm-ip-target: "5" minimum-ip-target: "2"
  2. Enregistrez le fichier et fermez l'éditeur.

    1. Création Windows groupes de nœuds avec au moins un Amazon EC2 Nitro type d'instance. Pour une liste des Nitro types d'instances, voir Instances créées sur le système Nitro dans le guide de l'EC2utilisateur Amazon. Par défaut, le nombre maximum de Pods que vous pouvez déployer sur un nœud est 110. Si vous souhaitez augmenter ou diminuer ce nombre, indiquez ce qui suit dans les données utilisateur de la configuration d'amorçage. Remplacez max-pods-quantity avec la valeur maximale de vos pods.

      -KubeletExtraArgs '--max-pods=max-pods-quantity'

      Si vous déployez des groupes de nœuds gérés, cette configuration doit être ajoutée dans le modèle de lancement. Pour de plus amples informations, veuillez consulter Personnalisez les nœuds gérés avec des modèles de lancement. Pour plus d'informations sur les paramètres de configuration pour Windows script bootstrap, voirParamètres de configuration du script d'amorçage. Une fois que vos nœuds sont déployés, affichez les nœuds de votre cluster.

      +

      kubectl get nodes

      + Voici un exemple de sortie.

      +

      NAME STATUS ROLES AGE VERSION ip-192-168-22-103.region-code.compute.internal Ready <none> 19m v1.XX.X-eks-6b7464 ip-192-168-97-94.region-code.compute.internal Ready <none> 19m v1.XX.X-eks-6b7464
      1. Décrivez l'un des nœuds pour déterminer la valeur de max-pods pour le nœud et le nombre d'adresses IP disponibles. Remplacez 192.168.30.193 avec l'IPv4adresse dans le nom de l'un de vos nœuds renvoyée dans la sortie précédente.

        kubectl describe node ip-192-168-30-193.region-code.compute.internal | grep 'pods\|PrivateIPv4Address'

        L'exemple qui suit illustre un résultat.

        pods: 110 vpc.amazonaws.com/PrivateIPv4Address: 144

        Dans la sortie précédente, 110 est le nombre maximum de Pods that Kubernetes sera déployé sur le nœud, même si 144 Les adresses IP sont disponibles.