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.
IPv6
adresses 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'IPv6
avec 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
-
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
-
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
-
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>
-
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
-
(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.
-
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
-
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.
-
Exécutez les commandes suivantes pour définir certaines variables utilisées dans les étapes suivantes. region-code
Remplacez-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
-
Créez un Amazon VPC avec des sous-réseaux publics et privés qui répondent aux exigences Amazon EKS et IPv6
.
-
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
-
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
-
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
-
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
-
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}
-
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.
-
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
-
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
-
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
"
-
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)
-
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
-
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
-
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
-
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
.
-
Créez un rôle IAM de nœud.
-
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
Créez la politique IAM.
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy
--policy-document file://vpc-cni-ipv6-policy.json
-
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
-
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
-
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
"
-
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
-
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
-
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)
-
Créez un groupe de nœuds gérés.
-
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
-
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
-
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>
-
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
-
(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.
-
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.
-
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
-
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
-
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
.
-
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
-
Supprimez la AWS CloudFormation pile qui a créé le VPC.
aws cloudformation delete-stack --region $region_code --stack-name $vpc_stack_name