Quelles sont les bonnes pratiques pour configurer le plug-in CNI Amazon VPC afin qu'il utilise une adresse IP dans les sous-réseaux VPC avec Amazon EKS ?

Dernière mise à jour :22/11/2021

Je souhaite configurer le plug-in Container Network Interface (CNI) Amazon Virtual Private Cloud (VPC) pour utiliser une adresse IP dans les sous-réseaux VPC avec Amazon Elastic Kubernetes Service (Amazon EKS). Quelles sont les bonnes pratiques ?

Brève description

L'un des principaux composants de CNI Amazon VPC est le démon L-IPAM. Vous configurez ce démon pour allouer des adresses IP aux nœuds.

Si un nouveau pod est planifié sur un nœud, le kubelet appelle le binaire CNI. Le binaire CNI appelle le L-IPAMD pour obtenir une adresse IP pour le nouveau pod. Le pod suit ensuite les interfaces réseau Elastic et les adresses IP qui sont attachées à l'instance.

Vous pouvez utiliser certaines variables de configuration pour contrôler le nombre d'interfaces réseau et d'adresses IP gérées. Pour plus d'informations, consultez WARM_ENI_TARGET, WARM_IP_TARGET et MINIMUM_IP_TARGET et WARM_PREFIX_TARGET, WARM_IP_TARGET et MINIMUM_IP_TARGET (sur le site web GitHub).

Solution

Voici les bonnes pratiques de base pour l'utilisation de variables de configuration afin de contrôler le nombre d'interfaces réseau et d'adresses IP gérées.

WARM_ENI_TARGET

Utilisez la variable WARM_ENI_TARGET pour déterminer le nombre d'interfaces réseau Elastic que le L-IPAMD garde disponibles afin que les pods reçoivent immédiatement une adresse IP lorsqu'ils sont planifiés sur un nœud.

  • Pour éviter d'appauvrir les adresses IP disponibles dans le sous-réseau, assurez-vous de vérifier le type d'instance du composant master et le nombre maximum d'interfaces réseau et d'adresses IPv4 privées par interface. Par exemple, si vous définissez WARM_ENI_TARGET=3 pour un nœud m5.xlarge, trois interfaces réseau Elastic sont toujours attachées au nœud. Le nœud attribue ensuite 45 adresses IP, 15 par interface réseau Elastic. Étant donné que les 45 adresses IP sont réservées pour ce nœud, ces adresses ne peuvent pas être utilisées pour des pods planifiés sur d'autres composants master.
  • Si vous vous attendez à ce que votre application monte fortement en échelle, vous pouvez utiliser WARM_ENI_TARGET pour gérer rapidement les pods nouvellement planifiés.

WARM_IP_TARGET

Utilisez la variable WARM_IP_TARGET pour vous assurer que vous disposez toujours d'un nombre défini d'adresses IP disponibles dans le groupe à chaud du L-IPAMD.

  • Pour les clusters à faible productivité, utilisez WARM_IP_TARGET afin que seul le nombre d'adresses IP requis soit attribué à l'interface réseau. Cela empêche le blocage des adresses IP des interfaces réseau Elastic.

MINIMUM_IP_TARGET

Utilisez le paramètre MINIMUM_IP_TARGET pour vous assurer qu'un nombre minimum d'adresses IP est attribué à un nœud lors de sa première apparition. Cette variable est généralement utilisée avec la variable WARM_IP_TARGET.

  • Si vous connaissez le nombre minimum de pods que vous allez exécuter par nœud, utilisez MINIMUM_IP_TARGET afin que le nombre d'adresses IP requis soit attribué. Si les adresses IP sont facilement disponibles, les pods peuvent les recevoir au fur et à mesure de leur planification.
  • Définissez cette variable avec WARM_IP_TARGET pour vous assurer qu'il existe des adresses IP disponibles sur le nœud pour les futurs pods.

WARM_PREFIX_TARGET

Utilisez la variable WARM_PREFIX_TARGET pour vous assurer qu'un nombre défini de préfixes (blocs d'adresse CIDR /28) est toujours ajouté à l'interface réseau de l'instance. Vous pouvez utiliser WARM_PREFIX_TARGET uniquement pour CNI version 1.9.0 ou ultérieure, et vous devez activer la capacité d'affectation de préfixe d'adresse IP CNI Amazon VPC.

  • Si vous utilisez l'affectation de préfixe d'adresse IP, assurez-vous que la variable WARM_PREFIX_TARGET est définie sur une valeur supérieure ou égale à 1. Si elle est définie sur 0, vous recevez l'erreur suivante :
Error: Setting WARM_PREFIX_TARGET = 0 is not supported while WARM_IP_TARGET/MINIMUM_IP_TARGET is not set. 
Please configure either one of the WARM_{PREFIX/IP}_TARGET or MINIMUM_IP_TARGET env variables
  • Pour les sous-réseaux plus petits, utilisez WARM_IP_TARGET avec WARM_PREFIX_TARGET pour éviter d'allouer trop de préfixes. L'attribution d'un trop grand nombre de préfixes peut supprimer les adresses IP disponibles.

Pour en savoir plus sur la façon dont ces variables de configuration affectent l'utilisation des adresses IP, consultez Variables de configuration CNI (sur le site web GitHub).


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?