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.
-
Serviços do Kubernetes só são atribuídos a um endereço IPv6. Isso não ocorre com um endereço IPv4.
-
Os pods recebem um endereço IPv6 e um endereço IPv4 local do host. O endereço IPv4 local do host é atribuído usando um plug-in CNI local do host encadeado com o VPC CNI, e o endereço não é informado ao ambiente de gerenciamento do Kubernetes. Ele só é usado quando um pod precisa se comunicar com recursos IPv4 externos em outra Amazon VPC ou na internet. O endereço IPv4 local do host sé SNATed (pelo VPC CNI) para o endereço IPv4 primário da ENI primária do nó de processamento.
-
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 Usar o armazenamento do Amazon FSx para 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 ter 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 Configurar o kubectl e o eksctl.
-
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.184.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
-
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
-
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
-
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>
-
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
-
(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.
-
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.
-
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.
-
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
-
Crie uma Amazon VPC com sub-redes públicas e privadas que atenda aos requisitos do Amazon EKS e IPv6
.
-
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
-
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
-
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
-
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
-
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}
-
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.
-
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
-
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
-
Crie a função.
aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json
"
-
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)
-
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
-
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
-
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
-
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
.
-
Crie uma função do IAM para o nó.
-
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
Crie a política do IAM.
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy
--policy-document file://vpc-cni-ipv6-policy.json
-
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
-
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
-
Crie o perfil do IAM.
aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json
"
-
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
-
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
-
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)
-
Crie um grupo de nós gerenciado.
-
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
-
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
-
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>
-
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
-
(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.
-
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.
-
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
-
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
-
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
.
-
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
-
Exclua a pilha do AWS CloudFormation que criou a VPC.
aws cloudformation delete-stack --region $region_code --stack-name $vpc_stack_name