Endereços IPv6 para clusters, Pods e services - Amazon EKS

Ajudar a melhorar esta página

Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.

Endereços IPv6 para clusters, Pods e services

Por padrão, o Kubernetes atribui endereços IPv4 aos Pods e services. Em vez de atribuir endereços IPv4 aos seus Pods e services, é possível configurar o seu cluster para atribuir endereços IPv6 a eles. O Amazon EKS não é compatível com pilhas duplas de Pods ou services, embora o Kubernetes seja na versão1.23 e posterior. Consequentemente, você não pode atribuir endereços IPv4 e IPv6 aos seus Pods e services.

Você seleciona qual família de IPs deseja usar para o seu cluster ao criá-lo. Não será possível alterar a família depois de criar o cluster.

Considerações sobre o uso da família IPv6 para o cluster

  • Você deve criar um novo cluster e especificar que deseja usar a família IPv6 para esse cluster. Você não pode habilitar a família do IPv6 para um cluster atualizado de uma versão anterior. Para obter instruções sobre como criar um novo cluster, consulte Criar um cluster do Amazon EKS.

  • A versão do complemento CNI da Amazon VPC que você implanta em seu cluster deve ser a versão 1.10.1 ou superior. Essa versão ou uma posterior é implantada por padrão. Depois de implantar o complemento, você não poderá fazer downgrade do seu complemento CNI da Amazon VPC para uma versão inferior a 1.10.1 sem remover primeiro todos os nós em todos os grupos de nós do seu cluster.

  • Os Pods e services do Windows não são compatíveis.

  • Se você usar nós do Amazon EC2, deverá configurar o complemento CNI da Amazon VPC com delegação de prefixo IP e IPv6. Se você escolher a família IPv6 ao criar o seu cluster, a versão 1.10.1 do complemento elegerá tal configuração como padrão. Esse é o caso de complementos autogerenciados ou do Amazon EKS. Para obter mais informações sobre a delegação de prefixos IP, consulte Aumente a quantidade de endereços IP disponíveis para seus nós do Amazon EC2.

  • Ao criar um cluster, a VPC e as sub-redes que você especificar deverão ter um bloco CIDR IPv6 atribuído a elas. Elas também precisam ter um bloco CIDR IPv4 atribuído a elas. Isso ocorre porque, ainda que você só queira usar o IPv6, uma VPC ainda precisa de um bloco CIDR IPv4 para funcionar. Para obter mais informações, consulte Associar um bloco CIDR IPv6 à sua VPC, no Guia do usuário da Amazon VPC.

  • Ao criar o seu cluster e nós, você deve especificar sub-redes configuradas para atribuir automaticamente endereços IPv6. Caso contrário, você não poderá implantar o seu cluster e nós. Por padrão, essa configuração fica desativada. Para obter mais informações, consulte Modificar o atributo de endereçamento IPv6 para a sua sub-rede no Guia do usuário da Amazon VPC.

  • As tabelas de rotas atribuídas às suas sub-redes devem ter rotas para endereços IPv6. Para obter mais informações, consulte Migrar para IPv6 no Guia do usuário da Amazon VPC.

  • Os seus grupos de segurança devem permitir endereços IPv6. Para obter mais informações, consulte Migrar para IPv6 no Guia do usuário da Amazon VPC.

  • Você só pode usar o IPv6 com nós do Amazon EC2 baseados em AWS Nitro ou do Fargate.

  • Não é possível usar o IPv6 com Grupos de segurança do Pods com nós do Amazon EC2. No entanto, você pode usá-lo com os nós do Fargate. Se você precisar de grupos de segurança separados para Pods individuais, continue usando a família do IPv4 com nós do Amazon EC2 ou use nós do Fargate.

  • Se você usou redes personalizadas anteriormente para aliviar o esgotamento de endereços IP, poderá substituí-las por IPv6. Não é possível usar redes personalizadas com IPv6. Se você usar redes personalizadas para isolar redes, talvez seja necessário continuar usando redes personalizadas e a família IPv4 para os seus clusters.

  • Não é possível usar IPv6 com AWS Outposts.

  • Pods e services recebem apenas um endereço IPv6. Isso não ocorre com um endereço IPv4. Como os Pods podem se comunicar com endpoints IPv4 por meio do NAT na própria instância, DNS64 e NAT64 não são necessários. Se o tráfego precisar de um endereço IP público, ele será o endereço de rede de origem traduzido para um IP público.

  • O endereço IPv6 de origem de um Pod não é o endereço de rede de origem traduzido para o endereço IPv6 do nó em um momento de comunicação externa à VPC. Ele é roteado usando um gateway da Internet ou um gateway da Internet somente de saída.

  • Todos os nós são atribuídos a endereços IPv4 e IPv6.

  • O Driver da CSI do Amazon FSx for Lustre não é compatível.

  • É possível usar a versão 2.3.1 ou superior do AWS Load Balancer Controller para balancear a carga de tráfego de aplicações ou redes para IPv6 Pods no modo IP, mas não no modo de instância. Para ter mais informações, consulte O que é o AWS Load Balancer Controller?.

  • Você deve anexar uma política do IAM IPv6 ao seu perfil do IAM do CNI ou IAM do nó. Entre os dois, recomendamos que você a anexe a uma função do IAM do CNI. Para obter mais informações, consulte Criar uma política do IAM para clusters que usam a família IPv6 e Etapa 1: Criar o perfil do IAM Amazon VPC CNI plugin for Kubernetes.

  • Cada Pod do Fargate recebe um endereço IPv6 do CIDR especificado para a sub-rede em que está implantado. A unidade de hardware subjacente que executa Pods do Fargate obtém um endereço IPv4 e IPv6 exclusivo dos CIDRs atribuídos à sub-rede em que a unidade de hardware está implantada.

  • Recomendamos que você faça uma avaliação completa de suas aplicações, complementos do Amazon EKS e produtos da AWS com os quais você se integra antes de implantar clusters do IPv6. Isso ocorre para garantir que tudo funcione conforme o esperado com o IPv6.

  • O uso do endpoint IPv6 do Serviço de metadados de instância do Amazon EC2 não é compatível com o Amazon EKS.

  • Ao criar um grupo autogerenciado de nós em um cluster que use IPv6, os dados do usuário devem incluir os seguintes BootstrapArguments para o arquivo bootstrap.sh que é executado na inicialização do nó. Substitua your-cidr pelo intervalo CIDR IPv6 da VPC do seu cluster.

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

    Se você não souber o intervalo CIDR IPv6 para seu cluster, será possível visualizá-lo com o seguinte comando (requer o AWS CLI versão 2.4.9 ou posterior).

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

Implantar um cluster IPv6 e nós gerenciados do Amazon Linux

Neste tutorial, você implanta uma Amazon VPC IPv6, um cluster do Amazon EKS com a família IPv6 e um grupo de nós gerenciados com nós do Amazon Linux do Amazon EC2. Não é possível implantar nós do Amazon EC2 Windows em um cluster IPv6. Você também pode implantar nós do Fargate em seu cluster. Para simplificar, tais instruções não são fornecidas neste tópico.

Antes de criar um cluster para uso em produção, recomendamos que você se familiarize com todas as configurações e implante um cluster com as configurações que atendam aos seus requisitos. Para obter mais informações, consulte Criar um cluster do Amazon EKS, Grupos de nós gerenciados e as considerações deste tópico. Só é possível habilitar algumas configurações durante a criação do seu cluster.

Pré-requisitos

Antes de iniciar este tutorial, você deve instalar e configurar as ferramentas a seguir e os recursos necessários para criar e gerenciar um cluster do Amazon EKS.

  • A ferramenta da linha de comando kubectl está instalada no seu dispositivo ou no AWS CloudShell. A versão pode ser idêntica ou até uma versão secundária anterior ou posterior à versão Kubernetes do seu cluster. Por exemplo, se a versão do cluster for a 1.29, você poderá usar o kubectl versão 1.28, 1.29 ou 1.30 com ele. Para instalar ou atualizar o kubectl, consulte Instalar ou atualizar o kubectl.

  • A entidade principal de segurança do IAM que você está usando deve ter permissões para trabalhar com perfis do IAM do Amazon EKS, funções vinculadas ao serviço, AWS CloudFormation, uma VPC e recursos relacionados. Para obter mais informações, consulte Ações, recursos e chaves de condição do Amazon Elastic Kubernetes Service e Usar funções vinculadas a serviço no Guia do usuário do IAM.

Os procedimentos são fornecidos para criar os recursos com eksctl ou a AWS CLI. Você também pode implantar os recursos usando o AWS Management Console. Para simplificar, tais instruções não são fornecidas neste tópico.

eksctl
Pré-requisito

O eksctl versão 0.183.0 ou posterior instalada no computador. Para instalá-la ou atualizá-la, consulte Instalação na documentação do eksctl.

Para implantar um cluster IPv6 com eksctl
  1. Crie o arquivo ipv6-cluster.yaml. Copie o conteúdo a seguir no seu dispositivo. Faça as seguintes modificações no comando, conforme necessário, e execute o comando modificado:

    • Substitua my-cluster por um nome de cluster. O nome só pode conter caracteres alfanuméricos (sensíveis a maiúsculas e minúsculas) e hifens. Ele deve começar com um caractere alfanumérico e não pode ter mais de 100 caracteres. O nome deve ser exclusivo dentro da Região da AWS e da Conta da AWS na qual você está criando o cluster.

    • Substitua region-code por qualquer Região da AWS compatível com o Amazon EKS. Para obter uma lista das Regiões da AWS, consulte Endpoints e cotas do Amazon EKS no guia Referência geral da AWS.

    • O valor para version com a versão do seu cluster. Para obter mais informações, consulte a versão do Kubernetes do Amazon EKS compatível.

    • Substitua my-nodegroup por um nome para o seu grupo de nós. O nome do grupo de nós não pode exceder 63 caracteres. Deve começar com uma letra ou um dígito, mas pode incluir hifens e sublinhados para os demais caracteres.

    • Substitua t3.medium por qualquer tipo de instância do 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. Crie o seu cluster.

    eksctl create cluster -f ipv6-cluster.yaml

    A criação do cluster leva muitos minutos. Não prossiga até ver a última linha de saída, que deve parecer com a seguinte.

    [...]
    [✓]  EKS cluster "my-cluster" in "region-code" region is ready
  3. Confirme se os Pods padrão são atribuídos a endereços IPv6.

    kubectl get pods -n kube-system -o wide

    Veja um exemplo de saída abaixo.

    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. Confirme se os serviços padrão são atribuídos a endereços IPv6.

    kubectl get services -n kube-system -o wide

    Veja um exemplo de saída abaixo.

    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. (Opcional) Implante uma aplicação de amostra ou implante o AWS Load Balancer Controller e uma aplicação de amostra para balancear a carga do tráfego da aplicação ou da rede para IPv6 Pods.

  6. Após a conclusão de criação do cluster e nós para este tutorial, você deverá limpar os recursos que criou com o comando a seguir.

    eksctl delete cluster my-cluster
AWS CLI
Pré-requisito

A versão 2.12.3 ou superior ou a versão 1.27.160 ou superior da AWS Command Line Interface (AWS CLI) instalada e configurada em seu dispositivo ou no AWS CloudShell. Para verificar sua versão atual, use aws --version | cut -d / -f2 | cut -d ' ' -f1. Gerenciadores de pacotes, como yum, apt-get ou Homebrew para macOS, geralmente estão várias versões atrás da versão mais recente da AWS CLI. Para instalar a versão mais recente, consulte Instalar, atualizar e desinstalar a AWS CLI e Configuração rápida com o aws configure no Guia do usuário da AWS Command Line Interface. A versão da AWS CLI instalada no AWS CloudShell também pode estar várias versões atrás da versão mais recente. Para atualizá-la, consulte Instalar a AWS CLI no diretório inicial no Guia do usuário do AWS CloudShell. Se você usar o AWS CloudShell, talvez precise instalar a versão 2.12.3 ou posterior ou 1.27.160 ou posterior do AWS CLI, pois é possível que a versão padrão da AWS CLI instalada no AWS CloudShell seja anterior.

Importante
  • Você deve concluir todas as etapas deste procedimento como o mesmo usuário. Execute o seguinte comando para verificar o usuário atual:

    aws sts get-caller-identity
  • Você deve concluir todas as etapas deste procedimento no mesmo shell. Várias etapas usam variáveis definidas em etapas anteriores. As etapas que usam variáveis não funcionarão corretamente se os valores das variáveis forem definidos em um shell diferente. Se você usar o AWS CloudShell para concluir o procedimento a seguir, lembre-se de que, se você não interagir com ele usando o seu teclado ou ponteiro por aproximadamente 20 a 30 minutos, a sua sessão do shell será encerrada. Os processos em execução não contam como interações.

  • As instruções são redigidas para o shell bash e podem precisar de ajustes em outros shells.

Para criar o cluster com a AWS CLI

Substitua todos os example values nas etapas deste procedimento por seus próprios valores.

  1. Execute os comandos a seguir para definir algumas variáveis usadas em etapas posteriores. Substitua region-code pela Região da AWS na qual deseja implantar os recursos. O valor pode ser qualquer Região da AWS compatível com o Amazon EKS. Para obter uma lista das Regiões da AWS, consulte Endpoints e cotas do Amazon EKS no guia Referência geral da AWS. Substitua my-cluster por um nome de cluster. O nome só pode conter caracteres alfanuméricos (sensíveis a maiúsculas e minúsculas) e hifens. Ele deve começar com um caractere alfanumérico e não pode ter mais de 100 caracteres. O nome deve ser exclusivo dentro da Região da AWS e da Conta da AWS na qual você está criando o cluster. Substitua my-nodegroup por um nome para o seu grupo de nós. O nome do grupo de nós não pode exceder 63 caracteres. Deve começar com uma letra ou um dígito, mas pode incluir hifens e sublinhados para os demais caracteres. Substitua 111122223333 pelo ID da sua conta.

    export region_code=region-code export cluster_name=my-cluster export nodegroup_name=my-nodegroup export account_id=111122223333
  2. Crie uma Amazon VPC com sub-redes públicas e privadas que atenda aos requisitos do Amazon EKS e IPv6.

    1. Execute o seguinte comando para definir uma variável para o seu nome de pilha do AWS CloudFormation. Você pode substituir my-eks-ipv6-vpc por qualquer nome que escolher.

      export vpc_stack_name=my-eks-ipv6-vpc
    2. Crie uma VPC IPv6 usando um modelo do 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

      A pilha leva alguns minutos para ser criada. Execute o seguinte comando . Não prossiga para a próxima etapa até que a saída do comando seja CREATE_COMPLETE.

      aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name --query Stacks[].StackStatus --output text
    3. Recupere os IDs das sub-redes públicas que foram criadas.

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

      Veja um exemplo de saída abaixo.

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE
    4. Habilite a opção de atribuição automática de endereços IPv6 para as sub-redes públicas que foram criadas.

      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. Recupere os nomes das sub-redes e grupos de segurança criados pelo modelo na pilha implantada do AWS CloudFormation e armazene-os em variáveis para usar em uma etapa posterior.

      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. Crie um perfil do IAM de cluster e anexe a ele a política gerenciada pelo IAM no Amazon EKS necessária. Os clusters do Kubernetes gerenciados pelo Amazon EKS fazem chamadas para outros serviços da AWS em seu nome para gerenciar os recursos que você usa com o serviço.

    1. Execute o seguinte comando para criar o arquivo eks-cluster-role-trust-policy.json.

      cat >eks-cluster-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
    2. Execute o seguinte comando para definir uma variável para o nome da sua função. Você pode substituir myAmazonEKSClusterRole por qualquer nome que escolher.

      export cluster_role_name=myAmazonEKSClusterRole
    3. Crie a função.

      aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    4. Recupere o ARN da função do IAM e o armazene em uma variável para uma etapa posterior.

      cluster_iam_role=$(aws iam get-role --role-name $cluster_role_name --query="Role.Arn" --output text)
    5. Anexe a política de IAM gerenciada pelo Amazon EKS à função.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name $cluster_role_name
  4. Crie o seu 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

      Talvez você receba um erro porque uma das zonas de disponibilidade em sua solicitação não tem capacidade suficiente para criar um cluster do Amazon EKS. Se isso acontecer, o resultado do erro conterá as zonas de disponibilidade que são compatíveis com o novo cluster. Tente criar o cluster com pelo menos duas sub-redes que estejam localizadas nas zonas de disponibilidade compatíveis de sua conta. Para ter mais informações, consulte Insufficient capacity (Capacidade insuficiente).

      A criação do cluster demora alguns minutos. Execute o seguinte comando . Não prossiga para a próxima etapa até que a saída do comando esteja ACTIVE.

      aws eks describe-cluster --region $region_code --name $cluster_name --query cluster.status
  5. Crie ou atualize um arquivo kubeconfig para o seu cluster para que você possa se comunicar com ele.

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

    Por padrão, um arquivo ~/.kube é criado em config ou o novo cluster é adicionado a um arquivo config existente no ~/.kube.

  6. Crie uma função do IAM para o nó.

    1. Execute o seguinte comando para criar o arquivo vpc-cni-ipv6-policy.json.

      cat >vpc-cni-ipv6-policy <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] } ] } EOF
    2. Crie a política do IAM.

      aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
    3. Execute o seguinte comando para criar o arquivo node-role-trust-relationship.json.

      cat >node-role-trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
    4. Execute o seguinte comando para definir uma variável para o nome da sua função. Você pode substituir AmazonEKSNodeRole por qualquer nome que escolher.

      export node_role_name=AmazonEKSNodeRole
    5. Crie o perfil do IAM.

      aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json"
    6. Anexe a política do IAM à função do IAM.

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

      Para simplificar este tutorial, a política é anexada a esta função do IAM. No entanto, em um cluster de produção, recomendamos que você anexe a política a uma função do IAM separada. Para ter mais informações, consulte Configuração do Amazon VPC CNI plugin for Kubernetes a fim de usar perfis do IAM para contas de serviço (IRSA).

    7. Anexe duas políticas do IAM gerenciadas necessárias à função do IAM.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name $node_role_name aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name $node_role_name
    8. Recupere o ARN da função do IAM e o armazene em uma variável para uma etapa posterior.

      node_iam_role=$(aws iam get-role --role-name $node_role_name --query="Role.Arn" --output text)
  7. Crie um grupo de nós gerenciado.

    1. Exiba os IDs das sub-redes que você criou em uma etapa anterior.

      echo $subnets

      Veja um exemplo de saída abaixo.

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE,subnet-0377963d69EXAMPLE,subnet-0c05f819d5EXAMPLE
    2. Crie o grupo de nós. Substitua 0a1a56c486EXAMPLE, 099e6ca77aEXAMPLE, 0377963d69EXAMPLE e 0c05f819d5EXAMPLE pelos valores retornados na entrada da etapa anterior. Certifique-se de remover as vírgulas entre IDs de sub-redes da saída anterior no comando a seguir. Você pode substituir t3.medium por qualquer tipo de instância do 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

      A criação do grupo de nós demora alguns minutos. Execute o seguinte comando . Não prossiga para a próxima etapa até que a saída recebida esteja ACTIVE.

      aws eks describe-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name \ --query nodegroup.status --output text
  8. Confirme se os Pods padrão são atribuídos a endereços IPv6 na coluna IP.

    kubectl get pods -n kube-system -o wide

    Veja um exemplo de saída abaixo.

    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. Confirme se os serviços padrão são atribuídos a endereços IPv6 na coluna IP.

    kubectl get services -n kube-system -o wide

    Veja um exemplo de saída abaixo.

    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. (Opcional) Implante uma aplicação de amostra ou implante o AWS Load Balancer Controller e uma aplicação de amostra para balancear a carga do tráfego da aplicação ou da rede para IPv6 Pods.

  11. Após a conclusão de criação do cluster e nós para este tutorial, você deverá limpar os recursos que criou com os comandos a seguir. Certifique-se de que você não esteja usando nenhum dos recursos fora deste tutorial antes de excluí-los.

    1. Se você estiver realizando esta etapa em um shell diferente daquele em que realizou as etapas anteriores, defina os valores de todas as variáveis usadas nas etapas anteriores, substituindo os example values pelos valores especificados ao realizar as etapas anteriores. Se você estiver concluindo esta etapa no mesmo shell em que concluiu as etapas anteriores, pule para a próxima etapa.

      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. Exclua o seu grupo de nós.

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

      A exclusão demora alguns minutos. Execute o seguinte comando . Não prossiga para a próxima etapa se receber alguma saída.

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

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

      Demora alguns minutos até que o cluster seja excluído. Antes de continuar, verifique se o cluster foi excluído com o seguinte comando.

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

      Não prossiga para a próxima etapa até que a saída seja semelhante à seguinte saída.

      An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: my-cluster.
    4. Exclua os recursos do IAM que você criou. Substitua AmazonEKS_CNI_IPv6_Policy pelo nome que você escolheu, se ele for diferente do usado nas etapas anteriores.

      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. Exclua a pilha do AWS CloudFormation que criou a VPC.

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