Tutorial: Assegnazione di indirizzi IPv6 a pods e services - Amazon EKS

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
  1. 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
  2. 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
  3. 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>
  4. 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
  5. (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.

  6. 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.

Importante
  • È 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.

  1. 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
  2. Creare un Amazon VPC con sottoreti pubbliche e private che soddisfino i requisiti Amazon EKS e IPv6.

    1. 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
    2. 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
    3. 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
    4. 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
    5. 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}
  3. 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.

    1. 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
    2. 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
    3. Creare il ruolo.

      aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    4. 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)
    5. 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
  4. Creare il cluster.

    1. 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
      Nota

      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.

    2. 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
  5. 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.

  6. Creare un ruolo IAM del nodo.

    1. 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
    2. Creare la policy IAM.

      aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
    3. 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
    4. 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
    5. Creare il ruolo IAM.

      aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json"
    6. 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
      Importante

      Per semplicità, in questo tutorial la policy è allegata a questo ruolo IAM. Tuttavia, in un cluster di produzione, si consiglia di allegare la policy a un ruolo IAM separato. Per ulteriori informazioni, consultare Configurazione del Amazon VPC CNI plugin for Kubernetes per l'utilizzo dei ruoli IAM per gli account di servizio.

    7. 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
    8. 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)
  7. Creare un gruppo di nodi gestito.

    1. 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
    2. 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
  8. 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>
  9. 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
  10. (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.

  11. 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.

    1. 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
    2. 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
    3. 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.
    4. 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
    5. Eliminare lo stack AWS CloudFormation creato dal VPC.

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