Tutorial: Assegnazione di indirizzi IPv6
a pods e services
Per impostazione predefinita, Kubernetes assegna indirizzi IPv4
ai pods e ai services. Invece di assegnare indirizzi IPv4
a pods e services, è possibile configurare il cluster in modo da assegnare loro indirizzi IPv6
. Amazon EKS non supporta pods o services dual-stack, anche se Kubernetes non ha la versione 1.23
e successive. Di conseguenza, non è possibile assegnare sia indirizzi IPv4
che IPv6
a pods e services.
È possibile selezionare la famiglia IP che si desidera utilizzare per il cluster al momento della creazione. Non sarà possibile modificare il nome dopo aver creato il cluster.
Considerazioni sull'utilizzo della famiglia IPv6
per il cluster:
-
È necessario creare un nuovo cluster con versione 1.21
o successiva e specificare che si desidera utilizzare la famiglia IPv6
per quel cluster. Non è possibile abilitare la famiglia IPv6
per un cluster aggiornato da una versione precedente. Per istruzioni su come creare un nuovo cluster, consultare Creazione di un cluster Amazon EKS.
-
La versione del componente aggiuntivo CNI di Amazon VPC implementata sul cluster deve essere la versione 1.10.1
o successiva. Questa versione o una successiva è implementata per impostazione predefinita con un nuovo cluster 1.21
o successivo. Dopo aver implementato il componente aggiuntivo, non sarà possibile eseguire il downgrade del componente aggiuntivo CNI di Amazon VPC a una versione inferiore a 1.10.1
senza rimuovere tutti i nodi in tutti i gruppi di nodi nel cluster.
-
I pods e i services Windows non sono supportati.
-
Se si utilizzano i nodi Amazon EC2, è necessario configurare il componente aggiuntivo CNI di Amazon VPC con delega del prefisso IP e IPv6
. Se durante la creazione del cluster si sceglie la famiglia IPv6
, la versione 1.10.1
del componente aggiuntivo utilizza per impostazione predefinita questa configurazione. Questo è il caso di un componente aggiuntivo autogestito o Amazon EKS. Per ulteriori informazioni sulla delega dei prefissi IP, consultare Aumentare la quantità di indirizzi IP disponibili per i nodi Amazon EC2.
-
Quando si crea un cluster, il VPC e le sottoreti specificate devono avere un blocco CIDR IPv6
assegnato al VPC e alle sottoreti specificate. Devono inoltre disporre di un blocco CIDR IPv4
assegnato. Questo perché, anche se si desidera utilizzare solo IPv6
, il funzionamento di un VPC richiede comunque un blocco CIDR IPv4
. Per ulteriori informazioni, consulta Associazione di un blocco CIDR IPv6
al VPC nella Guida per l'utente di Amazon VPC.
-
Quando si creano cluster e nodi, è necessario specificare le sottoreti configurate per l'assegnazione automatica degli indirizzi IPv6
. In caso contrario, non sarà possibile implementare cluster e nodi. Per impostazione predefinita, questa configurazione è disabilitata. Per ulteriori informazioni, consulta Modifica dell'attributo di assegnazione degli indirizzi IPv6
per la sottorete nella Guida per l'utente di Amazon VPC.
-
Le tabelle di instradamento assegnate alle sottoreti devono avere percorsi per gli indirizzi IPv6
. Per ulteriori informazioni, consulta Migrare a IPv6
nella Guida per l'utente di Amazon VPC.
-
I gruppi di sicurezza devono consentire indirizzi IPv6
. Per ulteriori informazioni, consulta Migrare a IPv6
nella Guida per l'utente di Amazon VPC.
-
Puoi utilizzare IPv6
solo con nodi AWS Amazon EC2 o Fargate basati su Nitro.
-
Non è possibile utilizzare IPv6
con Tutorial: gruppi di sicurezza per pods con nodi Amazon EC2. Tuttavia, è possibile utilizzarlo con i nodi Fargate. Se sono necessari gruppi di sicurezza separati per singoli pods, continua a utilizzare la famiglia IPv4
con i nodi Amazon EC2 o utilizza invece i nodi Fargate.
-
Per ridurre l'esaurimento dell'indirizzo IP, puoi utilizzare l'indirizzo IPv6
anche se in precedenza hai impiegato una rete personalizzata. Non è possibile utilizzare una rete personalizzata con IPv6
. Se si utilizza una rete personalizzata per l'isolamento della rete, potrebbe essere necessario continuare a utilizzare la rete personalizzata e la famiglia IPv4
per i cluster.
-
Non è possibile utilizzare IPv6
con AWS Outposts.
-
A Pods e services viene assegnato solo un indirizzo IPv6
, e non un indirizzo IPv4
. Poiché i pods sono in grado di comunicare con gli endpoint IPv4
tramite NAT sull'istanza stessa, DNS64 e NAT64 non sono necessari. Se il traffico richiede un indirizzo IP pubblico, il traffico è quindi l'indirizzo di rete di origine tradotto in un IP pubblico.
-
L'indirizzo IPv6
di origine di un pod non è l'indirizzo di rete di origine tradotto nell'indirizzo IPv6
del nodo quando si comunica all'esterno del VPC. Viene instradato utilizzando un gateway Internet o gateway Internet egress-only.
-
A tutti i nodi viene assegnato un indirizzo IPv4
e uno IPv6
.
-
Driver CSI per Amazon FSx for Lustre non è supportato.
-
È possibile utilizzare la versione 2.3.1
o successiva di AWS Load Balancer Controller per eseguire il bilanciamento del carico dell'applicazione o del traffico di rete verso i pods IPv6
in modalità IP, ma non in modalità istanza. Per ulteriori informazioni, consultare Installazione del componente aggiuntivo AWS Load Balancer Controller.
-
È necessario allegare una policy IAM IPv6
al ruolo IAM del nodo o del CNI. Tra i due, consigliamo di allegarlo a un ruolo IAM CNI. Per ulteriori informazioni, consulta Creare una policy IAM per i cluster che utilizzano la famiglia IPv6 e Fase 1: creazione di un ruolo IAM per Amazon VPC CNI plugin for Kubernetes.
-
Ogni pod Fargate riceve un indirizzo IPv6
dal CIDR specificato per la sottorete in cui è stato implementato. L'unità hardware sottostante che esegue i pods Fargate ottiene un indirizzo IPv4
e uno IPv6
univoci dai CIDR assegnati alla sottorete in cui è implementata l'unità hardware.
-
Prima di implementare i cluster IPv6
, consigliamo di eseguire una valutazione approfondita delle proprie applicazioni, dei componenti aggiuntivi di Amazon EKS e dei servizi AWS da integrare. Questo per garantire che tutto funzioni come previsto con IPv6
.
-
Non è possibile utilizzare IPv6
con AWS App Mesh.
-
L'utilizzo dell'endpoint IPv6
di Amazon EC2 Instance Metadata Service non è supportato con Amazon EKS.
-
Quando crei un gruppo di nodi autogestito in un cluster che utilizza la famiglia IPv6
, i dati utente devono includere i seguenti BootstrapArguments
per il file bootstrap.sh
che viene eseguito all'avvio del nodo. Sostituisci your-cidr
con l'intervallo CIDR IPv6
del VPC del cluster.
--ip-family ipv6 --service-ipv6-cidr your-cidr
Se non conosci l'intervallo CIDR
IPv6
per il cluster, puoi visualizzarlo con il comando seguente (richiede AWS CLI versione 2.4.9
o successiva).
aws eks describe-cluster --name my-cluster
--query cluster.kubernetesNetworkConfig.serviceIpv6Cidr --output text
Implementazione di un cluster IPv6
e nodi Amazon Linux gestiti
In questo tutorial, implementi un Amazon VPC IPv6
, un cluster Amazon EKS con la famiglia IPv6
e un gruppo di nodi gestiti con nodi Amazon Linux per Amazon EC2. Non puoi implementare i nodi Windows per Amazon EC2 in un cluster IPv6
. È inoltre possibile implementare i nodi Fargate nel cluster, sebbene tali istruzioni non siano fornite in questo argomento per semplicità.
Prima di creare un cluster da utilizzare in produzione, è consigliabile acquisire familiarità con tutte le impostazioni e implementare un cluster con le impostazioni che soddisfano i tuoi requisiti. Per ulteriori informazioni, consultare Creazione di un cluster Amazon EKS, Gruppi di nodi gestiti e le considerazioni per questo argomento. Alcune impostazioni possono essere abilitate solo quando viene creato il cluster.
Prerequisiti
Prima di iniziare questo tutorial, è necessario installare e configurare i seguenti strumenti e risorse necessarie per creare e gestire un cluster Amazon EKS.
-
Lo strumento a riga di comando kubectl
è installato sul dispositivo o AWS CloudShell. La versione può essere uguale, o immediatamente precedente o successiva, alla versione Kubernetes del cluster. Ad esempio, se la versione del cluster è 1.22
, puoi usare kubectl
versione 1.21
, 1.22
o 1.23
. Per installare o aggiornare kubectl
, consulta Installazione o aggiornamento di kubectl: Per questo tutorial, è necessaria la versione 1.21
o successiva.
-
Il principale di sicurezza IAM che si sta utilizzando deve disporre delle autorizzazioni per lavorare con i ruoli IAM di Amazon EKS e i ruoli collegati al servizio, AWS CloudFormation e un VPC con le risorse correlate. Per ulteriori informazioni, consulta Operazioni, risorse e chiavi di condizione per Amazon Elastic Kubernetes Service e Utilizzo di ruoli collegati ai servizi nella Guida per l'utente di IAM.
Vengono fornite le procedure per creare le risorse con eksctl
o la AWS CLI. È inoltre possibile implementare le risorse utilizzandoAWS Management Console, ma queste istruzioni non sono fornite in questo argomento per semplicità.
- eksctl
-
Prerequisito
eksctl
versione 0.117.0
o successiva installata sul computer. Per installare o aggiornare, consultare Installazione o aggiornamento di eksctl.
Per implementare un cluster IPv6
con eksctl
-
Copia i seguenti contenuti sul dispositivo. Sostituire il example values
con quello in proprio possesso. Sostituisci region-code
con qualsiasi Regione AWS supportata da Amazon EKS. Per un elenco delle Regioni AWS, consulta la sezione Endpoint e quote di Amazon EKS nella guida di riferimenti generale di AWS. Puoi sostituire t3.medium
con qualsiasi tipo di istanza di AWS Nitro System. Il valore di version
deve essere 1.21
o una versione di Kubernetes di Amazon EKS supportata successiva. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfabetico e non può avere una lunghezza superiore a 100 caratteri. Dopo aver sostituito i valori, esegui il comando modificato per creare il file ipv6-cluster.yaml
.
cat >ipv6-cluster.yaml <<EOF
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: region-code
version: "1.21
"
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
-
Creare il cluster.
eksctl create cluster -f ipv6-cluster
.yaml
La creazione di cluster richiede diversi minuti. Non procedere finché non viene visualizzata l'ultima riga di output, simile alla seguente.
...
[✓] EKS cluster "my-cluster
" in "region-code
" region is ready
-
Confermare che ai pods di default siano assegnati indirizzi IPv6
.
kubectl get pods -n kube-system -o wide
Di seguito è riportato l'output di esempio.
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>
-
Confermare che ai servizi di default siano assegnati indirizzi IPv6
.
kubectl get services -n kube-system -o wide
Di seguito è riportato l'output di esempio.
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
-
(Facoltativo) Implementa un'applicazione di esempio o implementa il AWS Load Balancer Controller e un'applicazione di esempio per eseguire il bilanciamento del carico dell'applicazione o del traffico di rete verso i IPv6
pods.
-
Una volta terminato con il cluster e i nodi creati per questo tutorial, eliminare le risorse create con il comando riportato di seguito.
eksctl delete cluster my-cluster
- AWS CLI
-
Prerequisito
La versione 2.8.6
o successiva o la versione 1.26.3
o successiva della AWS CLI installata e configurata sul dispositivo o nella AWS CloudShell. È possibile verificare la versione corrente con aws --version | cut -d / -f2 | cut -d ' ' -f1
. I programmi di gestione dei pacchetti, come yum
, apt-get
o Homebrew per macOS, spesso sono aggiornati a versioni precedenti della AWS CLI. Per installare la versione più recente, consulta le sezioni Installazione, aggiornamento e disinstallazione di AWS CLI e Configurazione rapida con aws configure
nella Guida per l'utente di AWS Command Line Interface. Anche la versione della AWS CLI installata nella AWS CloudShell potrebbe essere di diverse versioni precedenti alla più recente. Per aggiornarla, consulta la sezione Installazione di AWS CLI nella directory principale nella Guida per l'utente di AWS CloudShell. Se si utilizza la AWS CloudShell, potrebbe essere necessario installare la versione 2.8.6
o successiva o 1.26.3
o successiva della AWS CLI, perché la versione di default di AWS CLI installata nella AWS CloudShell potrebbe essere una versione precedente.
-
È necessario che tutti i passaggi di questa guida siano completati dallo stesso utente.
-
È necessario completare tutti i passaggi di questa procedura nella stessa shell. Diversi passaggi utilizzano le variabili impostate nelle fasi precedenti. Le fasi che utilizzano le variabili non funzioneranno correttamente se i valori delle variabili sono impostati in una shell diversa. Se si utilizza la AWS CloudShell per completare la procedura seguente, tenere presente che se non si interagisce con la tastiera o il puntatore per circa 20-30 minuti, la sessione di shell termina. I processi in esecuzione non sono considerati interazioni.
-
Le istruzioni sono scritte per la shell Bash e per altre shell potrebbero essere necessarie ulteriori regolazioni.
Per creare il tuo cluster con la AWS CLI
Sostituire tutti i valori di esempio
nelle fasi di questa procedura con i propri valori.
-
Emettere i seguenti comandi per impostare alcune variabili utilizzate nelle fasi successive. Sostituisci region-code
con la Regione AWS in cui desideri implementare le risorse. Il valore può essere qualsiasi Regione AWS supportata da Amazon EKS. Per un elenco delle Regioni AWS, consulta la sezione Endpoint e quote di Amazon EKS nella guida di riferimenti generale di AWS. Sostituisci my-cluster
con un nome da assegnare al cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfabetico e non può avere una lunghezza superiore a 100 caratteri. Sostituisci my-nodegroup
con un nome per il gruppo di nodi. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfabetico e non può avere una lunghezza superiore a 100 caratteri. Sostituire 111122223333
con l'ID del proprio account.
export region_code=region-code
export cluster_name=my-cluster
export nodegroup_name=my-nodegroup
export account_id=111122223333
-
Creare un Amazon VPC con sottoreti pubbliche e private che soddisfino i requisiti Amazon EKS e IPv6
.
-
Eseguire questo comando per impostare una variabile per il nome dello stack AWS CloudFormation. Puoi sostituire my-eks-ipv6-vpc
con un nome a tua scelta.
export vpc_stack_name=my-eks-ipv6-vpc
-
Creare un VPC IPv6
utilizzando un modello AWS CloudFormation.
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 creazione dello stack richiede alcuni minuti. Esegui il seguente comando. Non passare alla fase successiva finché l'output del comando non è CREATE_COMPLETE
.
aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name --query Stacks[].StackStatus --output text
-
Recuperare gli ID delle sottoreti pubbliche che sono state create.
aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \
--query='Stacks[].Outputs[?OutputKey==`SubnetsPublic`].OutputValue' --output text
Di seguito è riportato l'output di esempio.
subnet-0a1a56c486EXAMPLE
,subnet-099e6ca77aEXAMPLE
-
Abilitare l'opzione di assegnazione automatica dell'indirizzo IPv6
per le sottoreti pubbliche create.
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
-
Recuperare i nomi delle sottoreti e dei gruppi di sicurezza creati dal modello dallo stack AWS CloudFormation implementato e memorizzarli in variabili da utilizzare in una fase successiva.
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}
-
Crea un ruolo IAM cluster e collega la policy gestita IAM richiesta da Amazon EKS. I cluster Kubernetes gestiti da Amazon EKS effettuano chiamate ad altri servizi AWS per tuo conto per gestire le risorse utilizzate con il servizio.
-
Per creare il file eks-cluster-role-trust-policy.json
, emetti il seguente comando:
cat >eks-cluster-role-trust-policy.json <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
-
Eseguire questo comando per impostare una variabile per il nome del ruolo. Puoi sostituire myAmazonEKSClusterRole
con un nome a tua scelta.
export cluster_role_name=myAmazonEKSClusterRole
-
Creare il ruolo.
aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json
"
-
Recuperare l'ARN del ruolo IAM e memorizzarlo in una variabile per una fase successiva.
cluster_iam_role=$(aws iam get-role --role-name $cluster_role_name --query="Role.Arn" --output text)
-
Allegare la policy IAM gestita da Amazon EKS richiesta al ruolo.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name $cluster_role_name
-
Creare il cluster.
-
La versione deve essere 1.21
o una versione Kubernetes supportata per Amazon EKS successiva.
aws eks create-cluster --region $region_code --name $cluster_name --kubernetes-version 1.21
\
--role-arn $cluster_iam_role --resources-vpc-config subnetIds=$subnets,securityGroupIds=$security_groups \
--kubernetes-network-config ipFamily=ipv6
Potresti ricevere un errore che indica che una delle zone di disponibilità nella richiesta non dispone di capacità sufficiente per creare un cluster Amazon EKS. In questo caso, l'output di errore contiene le zone di disponibilità in grado di supportare un nuovo cluster. Riprova a creare il cluster con almeno due sottoreti che si trovano nelle zone di disponibilità supportate per il tuo account. Per ulteriori informazioni, consultare Capacità insufficiente.
-
La creazione del cluster richiede diversi minuti. Esegui il seguente comando. Non passare alla fase successiva finché l'output del comando non è ACTIVE
.
aws eks describe-cluster --region $region_code --name $cluster_name --query cluster.status
-
Creare o aggiornare un file kubeconfig
per il cluster in modo che sia possibile comunicare con il cluster.
aws eks update-kubeconfig --region $region_code --name $cluster_name
Per impostazione predefinita, il file config
viene creato in ~/.kube
o la configurazione del nuovo cluster viene aggiunta a un file config
esistente in ~/.kube
.
-
Creare un ruolo IAM del nodo.
-
Per creare il file vpc-cni-ipv6-policy.json
, emetti il seguente comando:
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
Creare la policy IAM.
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy
--policy-document file://vpc-cni-ipv6-policy.json
-
Per creare il file node-role-trust-relationship.json
, emetti il seguente comando:
cat >node-role-trust-relationship.json <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
-
Eseguire questo comando per impostare una variabile per il nome del ruolo. Puoi sostituire AmazonEKSNodeRole
con un nome a tua scelta.
export node_role_name=AmazonEKSNodeRole
-
Creare il ruolo IAM.
aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json
"
-
Allegare la policy IAM al ruolo IAM.
aws iam attach-role-policy --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy
\
--role-name $node_role_name
-
Allegare al ruolo IAM le due policy gestite IAM richieste.
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
-
Recuperare l'ARN del ruolo IAM e memorizzarlo in una variabile per una fase successiva.
node_iam_role=$(aws iam get-role --role-name $node_role_name --query="Role.Arn" --output text)
-
Creare un gruppo di nodi gestito.
-
Visualizzare gli ID delle sottoreti creati in una fase precedente.
echo $subnets
Di seguito è riportato l'output di esempio.
subnet-0a1a56c486EXAMPLE
,subnet-099e6ca77aEXAMPLE
,subnet-0377963d69EXAMPLE
,subnet-0c05f819d5EXAMPLE
-
Creare il gruppo di nodi. Sostituisci 0a1a56c486EXAMPLE
, 099e6ca77aEXAMPLE
, 0377963d69EXAMPLE
, and 0c05f819d5EXAMPLE
con i valori restituiti nell'output della fase precedente. Assicurarsi di rimuovere le virgole tra gli ID delle sottoreti dall'output precedente nel comando seguente. Puoi sostituire t3.medium
con qualsiasi tipo di istanza di AWS Nitro System.
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 creazione del gruppo di nodi richiede alcuni minuti. Esegui il seguente comando. Non andare al passaggio successivo finché l'output restituito non è ACTIVE
.
aws eks describe-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name \
--query nodegroup.status --output text
-
Confermare che ai pods di default siano assegnati gli indirizzi IPv6
nella colonna IP
.
kubectl get pods -n kube-system -o wide
Di seguito è riportato l'output di esempio.
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>
-
Confermare che ai servizi di default siano assegnati gli indirizzi IPv6
nella colonna IP
.
kubectl get services -n kube-system -o wide
Di seguito è riportato l'output di esempio.
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
-
(Facoltativo) Implementa un'applicazione di esempio o implementa il AWS Load Balancer Controller e un'applicazione di esempio per eseguire il bilanciamento del carico dell'applicazione o del traffico di rete verso i pods IPv6
.
-
Una volta terminato con il cluster e i nodi creati per questo tutorial, è necessario eliminare le risorse create con i seguenti comandi. Assicurarsi di non utilizzare nessuna delle risorse al di fuori di questo tutorial prima di eliminarle.
-
Se stai completando questo passaggio in una shell diversa da quella in cui sono stati completati i passaggi precedenti, imposta i valori di tutte le variabili utilizzate nei passaggi precedenti, sostituendo i example values
con i valori specificati durante i passaggi precedenti. Se si sta completando questo passaggio nella stessa shell in cui sono stati completati i passaggi precedenti, andare alla fase successiva.
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
-
Eliminare il gruppo di nodi.
aws eks delete-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name
L'eliminazione richiede pochi minuti. Esegui il seguente comando. Non andare al passaggio successivo se viene restituito un output.
aws eks list-nodegroups --region $region_code --cluster-name $cluster_name --query nodegroups --output text
-
Elimina il cluster.
aws eks delete-cluster --region $region_code --name $cluster_name
L'eliminazione del cluster richiede alcuni minuti. Prima di continuare, accertarsi che il cluster sia eliminato con il comando seguente:
aws eks describe-cluster --region $region_code --name $cluster_name
Non andare al passaggio successivo finché l'output non è simile a quello seguente:
An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: my-cluster
.
-
Eliminare le risorse IAM create. Sostituisci AmazonEKS_CNI_IPv6_Policy
con il nome scelto, se è stato scelto un nome diverso da quello usato nei passaggi precedenti.
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
-
Eliminare lo stack AWS CloudFormation creato dal VPC.
aws cloudformation delete-stack --region $region_code --stack-name $vpc_stack_name