IPv6adresses pour les clustersPods, et services - Amazon EKS

Aidez à améliorer cette page

Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tout le monde.

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.

IPv6adresses pour les clustersPods, et services

Par défaut, Kubernetes attribue des adresses IPv4 à vos Pods et services. Au lieu d'attribuer des adresses IPv4 à vos Pods et services, vous pouvez configurer votre cluster pour leur attribuer des adresses IPv6. Amazon EKS ne prend pas en charge le double empilement Pods ou services, bien que Kubernetes le prenne en charge dans sa version1.23 et dans ses version ultérieures. Par conséquent, vous ne pouvez pas attribuer à la fois des adresses IPv4 et IPv6 à vos Pods et services.

Vous sélectionnez la famille IP que vous souhaitez utiliser pour votre cluster lorsque vous le créez. Vous ne pouvez pas changer la famille après avoir créé le cluster.

Considérations relatives à l'utilisation de la IPv6 famille pour votre cluster

  • Vous devez créer un nouveau cluster et spécifier que vous voulez utiliser la famille IPv6 pour ce cluster. Vous ne pouvez pas activer la famille IPv6 pour un cluster que vous avez mis à jour à partir d'une version précédente. Pour obtenir des instructions sur la création d'un cluster, veuillez consulter Création d'un cluster Amazon EKS.

  • La version du module complémentaire CNI Amazon VPC que vous déployez sur votre cluster doit être la version 1.10.1 ou ultérieure. Cette version ou une version ultérieure est déployée par défaut. Après avoir déployé le module complémentaire, vous ne pouvez pas rétrograder votre module complémentaire CNI Amazon VPC vers une version inférieure à 1.10.1 sans supprimer au préalable tous les nœuds de tous les groupes de nœuds de votre cluster.

  • Windows Pods et services ne sont pas pris en charge.

  • Si vous utilisez des nœuds Amazon EC2, vous devez configurer le module complémentaire CNI Amazon VPC pour qu'il utilise IPv6 et la délégation de préfixe IP. Si vous choisissez la famille IPv6 lors de la création de votre cluster, la version 1.10.1 du module complémentaire correspond par défaut à cette configuration. C'est le cas pour un module complémentaire auto-géré ou Amazon EKS. Pour de plus amples informations sur la délégation de préfixes IP, veuillez consulter Augmenter le nombre d'adresses IP disponibles pour vos nœuds Amazon EC2.

  • Lorsque vous créez un cluster, le VPC et les sous-réseaux que vous spécifiez doivent posséder un bloc d'adresse CIDR IPv6 affecté au VPC et aux sous-réseaux que vous spécifiez. Ils doivent également avoir un bloc d'adresse CIDR IPv4 qui leur est affecté. En effet, même si vous souhaitez uniquement utiliser IPv6, un VPC nécessite toujours un bloc d'adresse CIDR IPv4 pour fonctionner. Pour plus d'informations, veuillez consulter la section Associer un bloc d'adresse CIDR IPv6 à votre VPC dans le Guide de l'utilisateur Amazon VPC.

  • Lorsque vous créez votre cluster et vos nœuds, vous devez spécifier des sous-réseaux configurés pour attribuer automatiquement des adresses IPv6. Sinon, vous ne pourrez pas déployer votre cluster et vos nœuds. Par défaut, cette configuration est désactivée. Pour plus d'informations, consultez Modification de l'attribut d'adressage IPv6 de votre sous-réseau dans le Guide de l'utilisateur Amazon VPC.

  • Les tables de routage affectées à vos sous-réseaux doivent comporter des routes pour les adresses IPv6. Pour de plus amples informations, veuillez consulter la section Migrer vers IPv6 du Guide de l'utilisateur Amazon VPC.

  • Vos groupes de sécurité doivent autoriser les adresses IPv6. Pour de plus amples informations, veuillez consulter la section Migrer vers IPv6 du Guide de l'utilisateur Amazon VPC.

  • Vous ne pouvez l'utiliser qu'IPv6avec des nœuds Amazon EC2 ou Fargate AWS basés sur Nitro.

  • Vous ne pouvez pas utiliser IPv6 avec Groupes de sécurité pour Pods sur des nœuds Amazon EC2. Toutefois, vous pouvez l'utiliser avec des nœuds Fargate. Si vous avez besoin de groupes de sécurité distincts pour des Pods individuels, continuez à utiliser la famille IPv4 avec des nœuds Amazon EC2 ou utilisez plutôt des nœuds Fargate.

  • Si vous avez déjà utilisé la mise en réseau personnalisée pour atténuer l'épuisement des adresses IP, vous pouvez utiliser IPv6 à la place. Vous ne pouvez pas utiliser IPv6 avec une mise en réseau personnalisée. Si vous utilisez un réseau personnalisé pour l'isolation du réseau, vous devrez peut-être continuer à utiliser un réseau personnalisé et la famille IPv4 pour vos clusters.

  • Vous ne pouvez pas utiliser IPv6 avec AWS Outposts.

  • Les Pods et les services se voient attribuer uniquement une adresse IPv6. Aucune adresse IPv4 ne leur est affectée. Les Pods étant capables de communiquer avec des points de terminaison IPv4 par le biais de la NAT sur l'instance elle-même, DNS64 et NAT64 ne sont pas nécessaires. Si le trafic nécessite une adresse IP publique, l'adresse du réseau source est alors traduite en une IP publique.

  • L'adresse IPv6 source d'un Pod n'est pas traduite en adresse IPv6 du nœud lorsqu'il communique en dehors du VPC. Il est acheminé par une passerelle Internet ou une passerelle Internet de sortie uniquement.

  • Tous les nœuds se voient attribuer une adresse IPv4 et IPv6.

  • Le Pilote CSI Amazon FSx pour Lustre n'est pas pris en charge.

  • Vous pouvez utiliser la version 2.3.1 ou une version ultérieure du AWS Load Balancer Controller pour équilibrer la charge du trafic des applications ou du réseau IPv6 Pods en mode IP, mais pas en mode instance. Pour plus d’informations, consultez Qu'est-ce que AWS Load Balancer Controller ?.

  • Vous devez attacher une politique IPv6 IAM à votre rôle IAM de nœud ou CNI IAM. Entre les deux, nous vous recommandons de le rattacher à un rôle CNI IAM. Pour plus d’informations, consultez Créer une politique IAM pour les clusters qui utilisent la famille IPv6 et Étape 1 : création du rôle IAM Amazon VPC CNI plugin for Kubernetes.

  • Chaque Pod Fargate reçoit une adresse IPv6 à partir du CIDR spécifié pour le sous-réseau dans lequel il est déployé. L'unité matérielle sous-jacente qui exécute des Pods Fargate obtient une adresse IPv4 et IPv6 uniques à partir des CIDR affectés au sous-réseau dans lequel l'unité matérielle est déployée.

  • Nous vous recommandons d'effectuer une évaluation approfondie de vos applications, des modules complémentaires Amazon EKS et AWS des services auxquels vous intégrez avant de déployer des IPv6 clusters. Cela permet de s'assurer que tout fonctionne comme prévu avec IPv6.

  • L'utilisation du point de terminaison IPv6 du service de métadonnées d'instance Amazon EC2 n'est pas prise en charge avec Amazon EKS.

  • Lors de la création d'un groupe de nœuds autogéré dans un cluster qui utilise la famille IPv6, les données utilisateur doivent inclure les BootstrapArguments suivants pour le fichier bootstrap.sh qui s'exécute au démarrage du nœud. Remplacez your-cidr- par la portée IPv6 CIDR de l'ensemble de cluster de votre VPC.

    --ip-family ipv6 --service-ipv6-cidr your-cidr

    Si vous ne connaissez pas la IPv6 CIDR plage de votre cluster, vous pouvez la voir à l'aide de la commande suivante (nécessite la AWS CLI version 2.4.9 ou une version ultérieure).

    aws eks describe-cluster --name my-cluster --query cluster.kubernetesNetworkConfig.serviceIpv6Cidr --output text

Déploiement d'un cluster IPv6 et de nœuds gérés par Amazon Linux

Dans ce ditacticiel, vous déployez un Amazon VPC IPv6, un cluster Amazon EKS avec la famille IPv6 et un groupe de nœuds gérés avec des nœuds Amazon EC2 Amazon Linux. Vous ne pouvez pas déployer des nœuds Amazon EC2 Windows dans un cluster IPv6. Vous pouvez également déployer des nœuds Fargate dans votre cluster, mais ces instructions ne sont pas fournies dans cette rubrique pour des raisons de simplicité.

Avant de créer un cluster pour une utilisation en production, nous vous recommandons de vous familiariser avec tous les paramètres et de déployer un cluster avec les paramètres qui répondent à vos besoins. Pour de plus amples informations, veuillez consulter Création d'un cluster Amazon EKS, Groupes de nœuds gérés et les considérations relatives ce sujet. Vous ne pouvez activer certains paramètres que lors de la création de votre cluster.

Prérequis

Avant de démarrer ce didacticiel, vous devez installer et configurer les outils et les ressources suivants dont vous avez besoin pour créer et gérer un cluster Amazon EKS.

  • L'outil de ligne de commande kubectl est installé sur votre appareil ou AWS CloudShell. La version peut être identique à la version Kubernetes de votre cluster ou être maximum une version mineure antérieure ou ultérieure. Par exemple, si la version de votre cluster est 1.29, vous pouvez utiliser la version kubectl 1.28, 1.29 ou 1.30. Pour installer ou mettre à niveau kubectl, veuillez consulter Installation ou mise à jour de kubectl.

  • Le principal de sécurité IAM que vous utilisez doit être autorisé à utiliser les rôles IAM Amazon EKS, les rôles liés à un service AWS CloudFormation, un VPC et les ressources associées. Pour plus d'informations, consultez Actions, ressources et clés de condition pour Amazon Elastic Kubernetes Service et Utilisation des rôles liés à un service dans le guide de l'utilisateur IAM.

Des procédures sont fournies pour créer les ressources en utilisant soit eksctl, soit la AWS CLI. Vous pouvez également déployer les ressources à l'aide du AWS Management Console, mais ces instructions ne sont pas fournies dans cette rubrique pour des raisons de simplicité.

eksctl
Prérequis

Version 0.183.0 ou ultérieure de eksctl installée sur votre ordinateur. Pour l'installer ou le mettre à jour, veuillez consulter Installation dans la documentation de eksctl.

Pour déployer un cluster IPv6 avec eksctl
  1. Créez le fichier ipv6-cluster.yaml. Copiez la commande qui suit sur votre appareil. Si nécessaire, apportez les modifications suivantes à la commande, puis exécutez la commande modifiée :

    • Remplacez my-cluster par un nom pour votre cluster. Un nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphanumérique et ne doit pas dépasser 100 caractères. Le nom doit être unique dans le Région AWS et dans Compte AWS lequel vous créez le cluster.

    • Remplacez region-code par n'importe quelle Région AWS prise en charge par Amazon EKS. Pour en obtenir la liste Régions AWS, consultez la section Points de terminaison et quotas Amazon EKS dans le guide de référence AWS général.

    • La valeur de version correspond à la version de votre cluster. Pour obtenir plus d'informations, consultez la version de Kubernetes prise en charge par Amazon EKS.

    • Remplacer my-nodegroup avec un nom pour votre groupe de nœuds. Le nom du groupe de nœuds ne peut pas dépasser 63 caractères. Il doit commencer par une lettre ou un chiffre, mais peut également inclure des tirets et des traits de soulignement pour les autres caractères.

    • Remplacez t3.medium par tout type d'instance du système AWS Nitro.

    cat >ipv6-cluster.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: "X.XX" kubernetesNetworkConfig: ipFamily: IPv6 addons: - name: vpc-cni version: latest - name: coredns version: latest - name: kube-proxy version: latest iam: withOIDC: true managedNodeGroups: - name: my-nodegroup instanceType: t3.medium EOF
  2. Créer votre cluster.

    eksctl create cluster -f ipv6-cluster.yaml

    La création du cluster prend plusieurs minutes. Ne continuez pas avant d'avoir vu la dernière ligne de sortie, qui ressemble à la sortie suivante.

    [...]
    [✓]  EKS cluster "my-cluster" in "region-code" region is ready
  3. Vérifiez que les adresses IPv6 sont attribuées aux Pods par défaut.

    kubectl get pods -n kube-system -o wide

    L'exemple qui suit illustre un résultat.

    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES aws-node-rslts 1/1 Running 1 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> aws-node-t74jh 1/1 Running 0 5m32s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-cw7w2 1/1 Running 0 56m 2600:1f13:b66:8203:34e5:: ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-tx6n8 1/1 Running 0 56m 2600:1f13:b66:8203:34e5::1 ip-192-168-253-70.region-code.compute.internal <none> <none> kube-proxy-btpbk 1/1 Running 0 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> kube-proxy-jjk2g 1/1 Running 0 5m33s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none>
  4. Vérifiez que les adresses IPv6 sont attribuées aux services par défaut.

    kubectl get services -n kube-system -o wide

    L'exemple qui suit illustre un résultat.

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kube-dns ClusterIP fd30:3087:b6c2::a <none> 53/UDP,53/TCP 57m k8s-app=kube-dns
  5. (Facultatif) Déployez un exemple d'application ou déployez le AWS Load Balancer Controller et un exemple d'application pour équilibrer la charge des applications ou du trafic réseau vers les IPv6 Pods.

  6. Une fois que vous avez terminé avec le cluster et les nœuds que vous avez créés pour ce tutoriel, vous devez nettoyer les ressources que vous avez créées avec la commande suivante.

    eksctl delete cluster my-cluster
AWS CLI
Prérequis

Version 2.12.3 ou ultérieure ou version 1.27.160 ou ultérieure du AWS Command Line Interface (AWS CLI) installé et configuré sur votre appareil ou AWS CloudShell. Pour vérifier votre version actuelle, utilisez aws --version | cut -d / -f2 | cut -d ' ' -f1. Les gestionnaires de package, par exemple yum, apt-get, Homebrew ou macOS, sont souvent antérieurs de plusieurs versions à la AWS CLI. Pour installer la dernière version, consultez Installation, mise à jour et désinstallation de l’ AWS CLI et Configuration rapide avec aws configure dans le Guide de l’utilisateur AWS Command Line Interface . La AWS CLI version installée AWS CloudShell peut également avoir plusieurs versions de retard par rapport à la dernière version. Pour le mettre à jour, consultez la section Installation AWS CLI dans votre répertoire personnel dans le guide de AWS CloudShell l'utilisateur. Si vous utilisez le AWS CloudShell, vous devrez peut-être installer la version 2.12.3 ou une version ultérieure du AWS CLI, car la AWS CLI version par défaut installée dans le AWS CloudShell peut être une version antérieure. 1.27.160

Important
  • Vous devez effectuer toutes les étapes de cette procédure avec le même utilisateur. Exécutez la commande suivante pour vérifier l'utilisateur actuel :

    aws sts get-caller-identity
  • Vous devez effectuer toutes les étapes de cette procédure dans le même shell. Plusieurs étapes utilisent des variables définies dans les étapes précédentes. Les étapes qui utilisent des variables ne fonctionneront pas correctement si les valeurs de ces variables sont définies dans un autre shell. Si vous utilisez le plugin AWS CloudShell pour effectuer la procédure suivante, n'oubliez pas que si vous n'interagissez pas avec celui-ci à l'aide de votre clavier ou de votre pointeur pendant environ 20 à 30 minutes, votre session shell se termine. Les processus en cours d'exécution ne sont pas considérés comme des interactions.

  • Les instructions sont écrites pour le shell Bash et peuvent nécessiter des ajustements dans d'autres shells.

Pour créer votre cluster à l'aide du AWS CLI

Remplacez toutes les example values dans les étapes de cette procédure par vos propres valeurs.

  1. Exécutez les commandes suivantes pour définir certaines variables utilisées dans les étapes suivantes. region-codeRemplacez-le par Région AWS celui dans lequel vous souhaitez déployer vos ressources. La valeur peut être n'importe Région AWS laquelle prise en charge par Amazon EKS. Pour en obtenir la liste Régions AWS, consultez la section Points de terminaison et quotas Amazon EKS dans le guide de référence AWS général. Remplacez my-cluster par un nom pour votre cluster. Un nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphanumérique et ne doit pas dépasser 100 caractères. Le nom doit être unique dans le Région AWS et dans Compte AWS lequel vous créez le cluster. Remplacer my-nodegroup avec un nom pour votre groupe de nœuds. Le nom du groupe de nœuds ne peut pas dépasser 63 caractères. Il doit commencer par une lettre ou un chiffre, mais peut également inclure des tirets et des traits de soulignement pour les autres caractères. Remplacez 111122223333 par votre ID de compte.

    export region_code=region-code export cluster_name=my-cluster export nodegroup_name=my-nodegroup export account_id=111122223333
  2. Créez un Amazon VPC avec des sous-réseaux publics et privés qui répondent aux exigences Amazon EKS et IPv6.

    1. Exécutez la commande suivante pour définir une variable pour le nom de votre AWS CloudFormation pile. Vous pouvez remplacer my-eks-ipv6-vpc par n'importe quel nom que vous choisissez.

      export vpc_stack_name=my-eks-ipv6-vpc
    2. Créez un IPv6 VPC à l'aide d'un AWS CloudFormation modèle.

      aws cloudformation create-stack --region $region_code --stack-name $vpc_stack_name \ --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-ipv6-vpc-public-private-subnets.yaml

      La création de la pile prend quelques minutes. Exécutez la commande suivante. Ne passez pas à l'étape suivante tant que la sortie de la commande n'est pas CREATE_COMPLETE.

      aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name --query Stacks[].StackStatus --output text
    3. Récupérez les ID des sous-réseaux publics qui ont été créés.

      aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SubnetsPublic`].OutputValue' --output text

      L'exemple qui suit illustre un résultat.

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE
    4. Activez l'option d'attribution automatique d'adresses IPv6 pour les sous-réseaux publics qui ont été créés.

      aws ec2 modify-subnet-attribute --region $region_code --subnet-id subnet-0a1a56c486EXAMPLE --assign-ipv6-address-on-creation aws ec2 modify-subnet-attribute --region $region_code --subnet-id subnet-099e6ca77aEXAMPLE --assign-ipv6-address-on-creation
    5. Récupérez les noms des sous-réseaux et des groupes de sécurité créés par le modèle à partir de la AWS CloudFormation pile déployée et stockez-les dans des variables pour une utilisation ultérieure.

      security_groups=$(aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SecurityGroups`].OutputValue' --output text) public_subnets=$(aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SubnetsPublic`].OutputValue' --output text) private_subnets=$(aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SubnetsPrivate`].OutputValue' --output text) subnets=${public_subnets},${private_subnets}
  3. Créez un rôle IAM de cluster et associez-y la politique gérée Amazon EKS IAM requise. Kubernetesles clusters gérés par Amazon EKS appellent d'autres AWS services en votre nom pour gérer les ressources que vous utilisez avec le service.

    1. Exécutez la commande suivante pour créer un fichier eks-cluster-role-trust-policy.json :

      cat >eks-cluster-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
    2. Exécutez la commande suivante pour définir une variable pour votre nom de rôle. Vous pouvez remplacer myAmazonEKSClusterRole par n'importe quel nom que vous choisissez.

      export cluster_role_name=myAmazonEKSClusterRole
    3. Créez le rôle.

      aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    4. Récupérez l'ARN du rôle IAM et le stockez dans une variable pour une étape ultérieure.

      cluster_iam_role=$(aws iam get-role --role-name $cluster_role_name --query="Role.Arn" --output text)
    5. Attachez la politique IAM gérée par Amazon EKS au rôle.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name $cluster_role_name
  4. Créer votre cluster.

    aws eks create-cluster --region $region_code --name $cluster_name --kubernetes-version 1.XX \ --role-arn $cluster_iam_role --resources-vpc-config subnetIds=$subnets,securityGroupIds=$security_groups \ --kubernetes-network-config ipFamily=ipv6
    1. Note

      Il est possible que vous receviez un message d'erreur indiquant que l'une des zones de disponibilité de votre demande ne dispose pas d'une capacité suffisante pour créer un cluster Amazon EKS. Si cela se produit, la sortie de l'erreur contient les zones de disponibilité qui peuvent prendre en charge un nouveau cluster. Essayez à nouveau de créer votre cluster avec au moins deux sous-réseaux situés dans les zones de disponibilité prises en charge pour votre compte. Pour plus d’informations, consultez Capacité insuffisante.

      La création du cluster prend quelques minutes. Exécutez la commande suivante. Ne passez pas à l'étape suivante tant que la sortie de la commande n'est pas ACTIVE.

      aws eks describe-cluster --region $region_code --name $cluster_name --query cluster.status
  5. Créez ou mettez à jour un fichier kubeconfig pour votre cluster afin de pouvoir communiquer avec votre cluster.

    aws eks update-kubeconfig --region $region_code --name $cluster_name

    Par défaut, le paramètre config est créé dans ~/.kube ou la configuration du nouveau cluster est ajoutée à un config fichier dans ~/.kube.

  6. Créez un rôle IAM de nœud.

    1. Exécutez la commande suivante pour créer un fichier vpc-cni-ipv6-policy.json :

      cat >vpc-cni-ipv6-policy <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] } ] } EOF
    2. Créez la politique IAM.

      aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
    3. Exécutez la commande suivante pour créer un fichier node-role-trust-relationship.json :

      cat >node-role-trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
    4. Exécutez la commande suivante pour définir une variable pour votre nom de rôle. Vous pouvez remplacer AmazonEKSNodeRole par n'importe quel nom que vous choisissez.

      export node_role_name=AmazonEKSNodeRole
    5. Créez le rôle IAM.

      aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json"
    6. Attachez la politique IAM au rôle IAM.

      aws iam attach-role-policy --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name $node_role_name
      Important

      Pour simplifier ce tutoriel, la politique est attachée à ce rôle IAM. Toutefois, dans un cluster de production, nous recommandons de rattacher la politique à un rôle IAM distinct. Pour plus d’informations, consultez Configuration de l'utilisation Amazon VPC CNI plugin for Kubernetes des rôles IAM pour les comptes de service (IRSA).

    7. Attachez deux politiques gérées IAM requises au rôle IAM.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name $node_role_name aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name $node_role_name
    8. Récupérez l'ARN du rôle IAM et le stockez dans une variable pour une étape ultérieure.

      node_iam_role=$(aws iam get-role --role-name $node_role_name --query="Role.Arn" --output text)
  7. Créez un groupe de nœuds gérés.

    1. Affichez les ID des sous-réseaux que vous avez créés à l'étape précédente.

      echo $subnets

      L'exemple qui suit illustre un résultat.

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE,subnet-0377963d69EXAMPLE,subnet-0c05f819d5EXAMPLE
    2. Créez le groupe de nœuds. Remplacez 0a1a56c486EXAMPLE, 099e6ca77aEXAMPLE, 0377963d69EXAMPLE, et 0c05f819d5EXAMPLE par les valeurs renvoyées dans la sortie de l'étape précédente. Veillez à supprimer les virgules entre les ID de sous-réseau de la sortie précédente dans la commande suivante. Vous pouvez remplacer t3.medium par tout type d'instance du système AWS Nitro.

      aws eks create-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name \ --subnets subnet-0a1a56c486EXAMPLE subnet-099e6ca77aEXAMPLE subnet-0377963d69EXAMPLE subnet-0c05f819d5EXAMPLE \ --instance-types t3.medium --node-role $node_iam_role

      La création du groupe de nœuds prend quelques minutes. Exécutez la commande suivante. Ne passez pas à l'étape suivante tant que la sortie retournée n'est pas ACTIVE.

      aws eks describe-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name \ --query nodegroup.status --output text
  8. Vérifiez que les adresses IPv6 sont attribuées aux Pods par défaut dans la colonne IP.

    kubectl get pods -n kube-system -o wide

    L'exemple qui suit illustre un résultat.

    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES aws-node-rslts 1/1 Running 1 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> aws-node-t74jh 1/1 Running 0 5m32s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-cw7w2 1/1 Running 0 56m 2600:1f13:b66:8203:34e5:: ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-tx6n8 1/1 Running 0 56m 2600:1f13:b66:8203:34e5::1 ip-192-168-253-70.region-code.compute.internal <none> <none> kube-proxy-btpbk 1/1 Running 0 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> kube-proxy-jjk2g 1/1 Running 0 5m33s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none>
  9. Vérifiez que les adresses IPv6 sont attribuées aux services par défaut dans la colonne IP.

    kubectl get services -n kube-system -o wide

    L'exemple qui suit illustre un résultat.

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kube-dns ClusterIP fd30:3087:b6c2::a <none> 53/UDP,53/TCP 57m k8s-app=kube-dns
  10. (Facultatif) Déployez un exemple d'application ou déployez le AWS Load Balancer Controller et un exemple d'application pour équilibrer la charge des applications ou du trafic réseau vers les IPv6 Pods.

  11. Une fois que vous avez terminé avec le cluster et les nœuds que vous avez créés pour ce tutoriel, vous devez nettoyer les ressources que vous avez créées avec les commandes suivantes. Assurez-vous que vous n'utilisez aucune des ressources en dehors de ce tutoriel avant de les supprimer.

    1. Si vous effectuez cette étape dans un shell différent de celui dans lequel vous avez effectué les étapes précédentes, définissez les valeurs de toutes les variables utilisées dans les étapes précédentes, en remplaçant les example values par les valeurs que vous avez spécifiées lorsque vous avez effectué les étapes précédentes. Si vous effectuez cette étape dans le même shell que celui dans lequel vous avez effectué les étapes précédentes, passez à l'étape suivante.

      export region_code=region-code export vpc_stack_name=my-eks-ipv6-vpc export cluster_name=my-cluster export nodegroup_name=my-nodegroup export account_id=111122223333 export node_role_name=AmazonEKSNodeRole export cluster_role_name=myAmazonEKSClusterRole
    2. Supprimez votre groupe de nœuds.

      aws eks delete-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name

      La suppression prend quelques minutes. Exécutez la commande suivante. Ne pas passer à l'étape suivante si une sortie est retournée.

      aws eks list-nodegroups --region $region_code --cluster-name $cluster_name --query nodegroups --output text
    3. Supprimez le cluster.

      aws eks delete-cluster --region $region_code --name $cluster_name

      La suppression du cluster prend quelques minutes. Avant de continuer, assurez-vous que le cluster est supprimé avec la commande suivante.

      aws eks describe-cluster --region $region_code --name $cluster_name

      Ne passez pas à l'étape suivante tant que votre résultat n'est pas similaire au résultat suivant.

      An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: my-cluster.
    4. Supprimez les ressources IAM que vous avez créées. Remplacez AmazonEKS_CNI_IPv6_Policy par le nom que vous avez choisi, si vous avez choisi un nom différent de celui utilisé dans les étapes précédentes.

      aws iam detach-role-policy --role-name $cluster_role_name --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy aws iam detach-role-policy --role-name $node_role_name --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy aws iam detach-role-policy --role-name $node_role_name --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly aws iam detach-role-policy --role-name $node_role_name --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy aws iam delete-policy --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy aws iam delete-role --role-name $cluster_role_name aws iam delete-role --role-name $node_role_name
    5. Supprimez la AWS CloudFormation pile qui a créé le VPC.

      aws cloudformation delete-stack --region $region_code --stack-name $vpc_stack_name