IPv6indirizzi per cluster Pods e services - Amazon EKS

Aiutaci a migliorare questa pagina

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

IPv6indirizzi per cluster 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 IPv6 famiglia per il cluster

  • È necessario creare un nuovo cluster e specificare che vuoi 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. Per impostazione predefinita, viene distribuita questa versione o una versione successiva. 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 utilizzarlo solo IPv6 con nodi Amazon EC2 o Fargate AWS basati su Nitro.

  • Non è possibile utilizzare IPv6 con 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. Siccome 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 del AWS Load Balancer Controller per bilanciare il carico dell'applicazione o del traffico di rete IPv6 Pods in modalità IP, ma non in modalità istanza. Per ulteriori informazioni, consulta Che cosa è la 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.

  • Ti consigliamo di eseguire una valutazione approfondita delle tue applicazioni, dei componenti aggiuntivi di Amazon EKS e AWS dei servizi con cui ti integri prima di distribuire IPv6 i cluster. Questo per garantire che tutto funzioni come previsto con IPv6.

  • 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'IPv6CIDRintervallo per il tuo cluster, puoi visualizzarlo con il seguente comando (richiede la 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 oppure immediatamente precedente o successiva alla versione Kubernetes del cluster. Ad esempio, se la versione del cluster è 1.29, puoi usare kubectl versione 1.28, 1.29 o 1.30. Per installare o aggiornare kubectl, consulta Installazione o aggiornamento di kubectl:

  • Il responsabile della sicurezza IAM che stai utilizzando deve disporre delle autorizzazioni per lavorare con i ruoli IAM di Amazon EKS, i ruoli collegati ai servizi AWS CloudFormation, un VPC e 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. Puoi anche distribuire le risorse utilizzando AWS Management Console, ma per semplicità tali istruzioni non sono fornite in questo argomento.

eksctl
Prerequisito

eksctl versione 0.183.0 o successiva installata sul computer. Per installarlo o aggiornarlo, consulta la sezione Installation nella documentazione di eksctl.

Per implementare un cluster IPv6 con eksctl
  1. Crea il file ipv6-cluster.yaml. Copia il comando seguente sul tuo dispositivo. Apportare le seguenti modifiche al comando, se necessario, quindi esegui il comando modificato:

    • 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 alfanumerico e non può superare i 100 caratteri. Il nome deve essere univoco all'interno del Regione AWS e in Account AWS cui si sta creando il cluster.

    • Sostituisci region-code con qualsiasi Regione AWS supportata da Amazon EKS. Per un elenco di Regioni AWS, consulta gli endpoint e le quote di Amazon EKS nella guida di riferimento AWS generale.

    • Il valore per version con la versione del tuo cluster. Per ulteriori informazioni, consulta la Versione Kubernetes Amazon EKS supportata.

    • Sostituisci my-nodegroup con un nome per il gruppo di nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura.

    • Sostituisci t3.medium con qualsiasi tipo di istanza di AWS Nitro System.

    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. 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 viene riportato un 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 viene riportato un 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

Versione 2.12.3 o successiva o versione 1.27.160 o successiva di AWS Command Line Interface (AWS CLI) installato e configurato sul tuo dispositivo o. AWS CloudShell Per verificare la versione attuale, usa 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 della AWS CLI e Configurazione rapida con aws configure nella Guida per l'utente dell'AWS Command Line Interface . La AWS CLI versione installata in AWS CloudShell potrebbe anche contenere diverse versioni precedenti alla versione più recente. Per aggiornarla, consulta Installazione nella home directory nella Guida AWS CLI per l'AWS CloudShell utente. Se si utilizza la AWS CloudShell, potrebbe essere necessario installare la versione 2.12.3 o una versione successiva 1.27.160 o successiva di AWS CLI, poiché la AWS CLI versione predefinita installata in AWS CloudShell potrebbe essere una versione precedente.

Importante
  • È necessario che tutti i passaggi di questa guida siano completati dallo stesso utente. Esegui il comando seguente per controllare l'utente corrente:

    aws sts get-caller-identity
  • È 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 cluster con AWS CLI

Sostituisci tutti i example values nelle fasi di questa procedura con i tuoi valori.

  1. Emettere i seguenti comandi per impostare alcune variabili utilizzate nelle fasi successive. Sostituiscilo region-code con Regione AWS quello in cui desideri distribuire le tue risorse. Il valore può essere qualsiasi Regione AWS valore supportato da Amazon EKS. Per un elenco di Regioni AWS, consulta gli endpoint e le quote di Amazon EKS nella guida di riferimento AWS generale. 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 alfanumerico e non può superare i 100 caratteri. Il nome deve essere univoco all'interno del Regione AWS e in Account AWS cui si sta creando il cluster. Sostituisci my-nodegroup con un nome per il gruppo di nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura. Sostituisci 111122223333 con l'ID del tuo 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. Esegui il comando seguente per impostare una variabile per il nome AWS CloudFormation dello stack. Puoi sostituire my-eks-ipv6-vpc con un nome a tua scelta.

      export vpc_stack_name=my-eks-ipv6-vpc
    2. Crea un IPv6 VPC utilizzando un AWS CloudFormation modello.

      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 comando seguente. 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 viene riportato un 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. Recupera i nomi delle sottoreti e dei gruppi di sicurezza creati dal modello dallo AWS CloudFormation stack distribuito e memorizzali in variabili da utilizzare in un passaggio successivo.

      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 del cluster e associa la policy gestita Amazon EKS IAM richiesta. Kubernetesi cluster gestiti da Amazon EKS effettuano chiamate ad altri AWS servizi per tuo conto per gestire le risorse che utilizzi 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. Crea 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.

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

      Potresti ricevere un messaggio di errore indicante 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, consulta Capacità insufficiente.

      La creazione del cluster richiede diversi minuti. Esegui il comando seguente. 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. Crea 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, consulta Configurazione dell'Amazon VPC CNI plugin for Kubernetesutilizzo dei ruoli IAM per gli account di servizio (IRSA).

    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 viene riportato un 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 comando seguente. 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 viene riportato un 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 viene riportato un 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 comando seguente. 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. Elimina lo AWS CloudFormation stack che ha creato il VPC.

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