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.
Criar nós autogerenciados do Amazon Linux
Este tópico descreve como você pode iniciar grupos do Auto Scaling de nós do Linux que são registrados no cluster do Amazon EKS. Depois que os nós ingressam no cluster, você pode implantar aplicações do Kubernetes neles. Além disso, é possível iniciar nós autogerenciados do Amazon Linux ao usar eksctl
ou o AWS Management Console. Se você precisar iniciar nós no AWS Outposts, consulte Criar nós Amazon Linux no AWS Outposts.
Pré-requisitos
-
Um cluster existente do Amazon EKS. Para implantar, consulte Criar um cluster do Amazon EKS.. Se você tiver sub-redes na Região da AWS com o AWS Outposts, o AWS Wavelength ou o AWS Local Zones habilitado, tais sub-redes não devem ter sido aprovadas na criação do seu cluster.
-
Um perfil do IAM existente para os nós usarem. Para criar uma, consulte Perfil do IAM em nós do Amazon EKS. Se essa função não tiver nenhuma das políticas da VPC CNI, a função separada a seguir será necessária para os pods da VPC CNI.
-
(Opcional, mas recomendado) O complemento Amazon VPC CNI plugin for Kubernetes configurado com o seu próprio perfil do IAM com a política do IAM necessária anexada a ele. Para ter mais informações, consulte Configurar o plug-in CNI da Amazon VPC para usar IRSA.
-
Familiaridade com as considerações listadas em Escolher um tipo de instância de nó do Amazon EC2 ideal. Dependendo do tipo de instância que você escolher, pode ser que haja pré-requisitos adicionais para o seu cluster e VPC.
- eksctl
-
nota
No momento, a ferramenta
eksctl
não é compatível com o Amazon Linux 2023.Pré-requisito
Versão
0.191.0
ou posterior da ferramenta da linha de comando doeksctl
instalada no dispositivo ou no AWS CloudShell. Para instalar ou atualizar oeksctl
, consulte Instalaçãona documentação do eksctl
.Para iniciar nós autogerenciados do Linux usando
eksctl
-
(Opcional) Se a política gerenciada do IAM, AmazonEKS_CNI_Policy, estiver anexada à Perfil do IAM em nós do Amazon EKS, recomendamos atribuí-la a um perfil do IAM que você associa à conta de serviço Kubernetes
aws-node
do Kubernetes. Para ter mais informações, consulte Configurar o plug-in CNI da Amazon VPC para usar IRSA. -
O comando a seguir cria um grupo de nós em um cluster existente. Substitua
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 oal-nodes
pelo nome do 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 os valores demy-cluster
restantes pelos seus próprios valores. Os nós são criados com a mesma versão do Kubernetes que o ambiente de gerenciamento, por padrão.example value
Antes de escolher um valor para
--node-type
, revise Escolher um tipo de instância de nó do Amazon EC2 ideal.Substituir
pelo nome do par de chaves do Amazon EC2 ou da chave pública. Essa chave é usada para SSH em seus nós depois que eles forem iniciados. Se ainda não tiver um par de chaves do Amazon EC2, você poderá criar um no AWS Management Console. Para obter mais informações, consulte Pares de chaves do Amazon EC2, no Guia do usuário do Amazon EC2.my-key
Crie seu grupo de nós com o comando a seguir.
Importante
Caso queria implantar um grupo de nós no AWS Outposts, no Wavelength ou nas sub-redes de zonas locais, há outras considerações:
-
As sub-redes não devem ter passado quando você criou o cluster.
-
É necessário criar o grupo de nós com um arquivo config que especifique as sub-redes e
volumeType
. Para obter mais informações, consulte Criar um grupo de nós em um arquivo de configuração: gp2 e Esquema de arquivo Config na documentação do eksctl
.
eksctl create nodegroup \ --cluster
my-cluster
\ --nameal-nodes
\ --node-typet3.medium
\ --nodes3
\ --nodes-min1
\ --nodes-max4
\ --ssh-access \ --managed=false \ --ssh-public-keymy-key
Para implantar um grupo de nós que:
-
Possa atribuir um número significativamente maior de endereços IP a Pods do que a configuração padrão, consulte Atribuir mais endereços IP aos nós do Amazon EKS com prefixos.
-
Possa atribuir endereços
IPv4
a Pods de um bloco CIDR diferente do bloco da instância, consulte Implementar pods em sub-redes alternadas com rede personalizada. -
pode atribuir endereços
IPv6
a Pods e serviços, consulte Atribuir endereços IPv6 a clusters, pods e serviços. -
Use o runtime
containerd
; é necessário implantar o grupo de nós usando um arquivoconfig
. Para ter mais informações, consulte Teste a migração do Amazon Linux 2 de Docker para containerd. -
Não tenha acesso de saída à Internet, consulte Implementar clusters privados com acesso limitado à internet.
Para obter uma lista completa de todas as opções e padrões disponíveis, digite o comando a seguir.
eksctl create nodegroup --help
Se os nós não conseguirem se juntar ao cluster, consulte Worker nodes fail to join cluster (Falha nos nós ao ingressar no cluster) no capítulo Solução de problemas.
Veja um exemplo de saída abaixo. Várias linhas são emitidas enquanto os nós são criados. Uma das últimas linha de saída é o exemplo de linha a seguir.
[✔] created 1 nodegroup(s) in cluster "
my-cluster
" -
-
(Opcional) Implante uma aplicação de amostra para testar o cluster e os nós do Linux.
Convém bloquear o acesso para Pod ao IMDS se as condições a seguir forem verdadeiras:
Você planeja atribuir perfis do IAM a todas as contas de serviço do Kubernetes para que os Pods tenham apenas as permissões mínimas de que precisam.
Nenhum dos Pods do cluster requer acesso ao serviço de metadados de instâncias do Amazon EC2 (IMDS) por outros motivos, como recuperar a Região da AWS atual.
Para obter mais informações, consulte Restringir o acesso ao perfil da instância atribuído ao nó de processamento
.
-
- AWS Management Console
-
Etapa 1: Para iniciar nós autogerenciados do Linux usando o AWS Management Console
-
Faça download da versão mais recente do modelo AWS CloudFormation.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
-
Aguarde até que o status do cluster seja exibido como
ACTIVE
. Se você executar os nós antes que o cluster esteja ativo, o registro dos nós no cluster falhará, e você terá de executá-los novamente. -
Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation
. -
Selecione Create stack (Criar pilha) e With new resources (standard) (Com novos recursos, padrão).
-
Para Specify template (Especificar modelo), selecione Upload a template file (Fazer upload de um arquivo de modelo) e depois Choose file (Escolher arquivo).
-
Selecione o arquivo
que você baixou.amazon-eks-nodegroup.yaml
-
Escolha Próximo.
-
Na página Specify stack details (Especificar detalhes da pilha), insira os parâmetros de acordo e escolha Next (Próximo):
-
Stack name (Nome da pilha): escolha um nome de pilha para a pilha do AWS CloudFormation. Por exemplo, você pode chamar de
. 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.my-cluster-nodes
-
ClusterName: insira o nome que você usou ao criar o cluster do Amazon EKS. Esse nome deve ser igual ao nome do cluster, ou seus nós não poderão ingressar no cluster.
-
ClusterControlPlaneSecurityGroup: escolha o valor de SecurityGroups no resultado do AWS CloudFormation que você gerou na criação da VPC.
As etapas a seguir mostram uma operação para recuperar o grupo aplicável.
Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters
. -
Escolha o nome do cluster.
-
Escolha a guia Redes.
-
Use o valor de Additional security group (Grupos de segurança adicionais) como referência ao selecionar na lista suspensa ClusterControlPlaneSecurityGroup.
-
NodeGroupName: insira um nome para o grupo de nós. Esse nome poderá ser usado superiormente para identificar o grupo de nós do Auto Scaling que for criado para os 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.
-
NodeAutoScalingGroupMinSize: digite o número mínimo de nós para o qual o grupo Auto Scaling de nós pode ser escalado.
-
NodeAutoScalingGroupDesiredCapacity: insira o número desejado de nós para o qual dimensionar quando a pilha for criada.
-
NodeAutoScalingGroupMaxSize: digite o número máximo de nós para o qual o grupo Auto Scaling de nós pode ser escalado.
-
NodeInstanceType: escolha um tipo de instância para os nós. Para ter mais informações, consulte Escolher um tipo de instância de nó do Amazon EC2 ideal.
-
NodeImageIdSSMParam: pré-preenchido com o parâmetro do Amazon EC2 Systems Manager de uma AMI recente otimizada para Amazon EKS, para uma versão do Kubernetes variável. Para usar uma versão secundária diferente do Kubernetes compatível com o Amazon EKS, substitua
por uma versão diferente compatível. Recomendamos especificar a mesma versão do Kubernetes que seu cluster.1.XX
Você também pode substituir
por um tipo de AMI diferente. Para ter mais informações, consulte Recuperar IDs de AMI do Amazon Linux recomendadas.amazon-linux-2
nota
A AMI do nó do Amazon EKS é baseada no Amazon Linux. Você pode monitorar eventos de segurança ou privacidade para o Amazon Linux 2 no Centro de segurança do Amazon Linux
ou fazendo a assinatura do feed RSS associado. Os eventos de segurança e privacidade incluem uma visão geral do problema, quais pacotes são afetadas e como atualizar suas instâncias para corrigir o problema. -
NodeImageId: (opcional) se estiver usando sua própria AMI personalizada (em vez da AMI otimizada para o Amazon EKS), insira um ID de AMI do nó para a sua Região da AWS. Se você especificar um valor aqui, ele substituirá todos os valores no campo NodeImageIdSSMParam.
-
NodeVolumeSize: especifique um tamanho de volume raiz para os nós, em GiB.
-
NodeVolumeType: especifique um tipo de volume raiz para os nós.
-
KeyName: insira o nome de um par de chaves SSH do Amazon EC2; que você pode usar para conectar-se usando SSH em seus nós, depois de iniciados. Se ainda não tiver um par de chaves do Amazon EC2, você poderá criar um no AWS Management Console. Para obter mais informações, consulte Pares de chaves do Amazon EC2, no Guia do usuário do Amazon EC2.
nota
Se você não fornecer um par de chaves aqui, ocorrerá uma falha ao criar a pilha do AWS CloudFormation.
-
BootstrapArguments: especifique argumentos opcionais para passar para o script de bootstrap do nó, como argumentos
kubelet
adicionais. Para obter mais informações, consulte as bootstrap script usage information(informações sobre o uso do script de boostrap) no GitHub. Para implantar um grupo de nós que:
-
Possa atribuir um número significativamente maior de endereços IP a Pods do que a configuração padrão, consulte Atribuir mais endereços IP aos nós do Amazon EKS com prefixos.
-
Possa atribuir endereços
IPv4
a Pods de um bloco CIDR diferente do bloco da instância, consulte Implementar pods em sub-redes alternadas com rede personalizada. -
pode atribuir endereços
IPv6
a Pods e serviços, consulte Atribuir endereços IPv6 a clusters, pods e serviços. -
Use o runtime
containerd
; é necessário implantar o grupo de nós usando um arquivoconfig
. Para ter mais informações, consulte Teste a migração do Amazon Linux 2 de Docker para containerd. -
Não tenha acesso de saída à Internet, consulte Implementar clusters privados com acesso limitado à internet.
-
-
DisableIMDSv1: por padrão, cada nó oferece suporte ao serviço de metadados de instância versão 1 (IMDSv1) e IMDSv2. Você pode desabilitar IMDSv1. Para evitar que futuros nós e Pods no grupo de nós usem MDSv1, defina DisableIMDSv1 como true. Para obter mais informações, consulte Configuring the instance metadata service (Configurar o serviço de metadados de instância). Para obter mais informações sobre como restringir o acesso a ele em seus nós, consulte Restringir o acesso ao perfil da instância atribuído ao nó de processamento
. -
VpcId: insira o ID da VPC que você criou.
-
Sub-redes: escolha as sub-redes criadas para a sua VPC. Se você criou a VPC usando as etapas descritas em Criar uma Amazon VPC para o cluster do Amazon EKS, especifique apenas as sub-redes privadas na VPC para que os nós sejam executados. É possível ver quais sub-redes são privadas abrindo cada link de sub-rede na guia Networking (Redes) do cluster.
Importante
-
Se alguma das sub-redes for pública, ela deverá ter a atribuição automática de atribuição de endereço IP público habilitada. Se a configuração não estiver habilitada para a sub-rede pública, os nós implantados nessa sub-rede pública não receberão um endereço IP público e não poderão se comunicar com o cluster nem com outros produtos da AWS. Se a sub-rede tiver sido implantada antes de 26 de março de 2020 usando qualquer um dos modelos doAWS CloudFormation VPC para o Amazon EKS, ou usando o
eksctl
, a atribuição automática de endereço IP público será desabilitada para sub-redes públicas. Para obter informações sobre como habilitar a atribuição de endereço IP público para uma sub-rede, consulte Modificar o atributo de endereçamentoIPv4
público para a sub-rede. Se o nó for implantado em uma sub-rede privada, ele poderá se comunicar com o cluster e com outros produtos da AWS por um gateway NAT. -
Se as sub-redes não tiverem acesso à Internet, certifique-se de que você esteja ciente das considerações e das etapas adicionais em Implementar clusters privados com acesso limitado à internet.
-
Se você selecionou sub-redes do AWS Outposts, do Wavelength de Zonas locais, essas sub-redes não devem ter sido passadas quando você criou o cluster.
-
-
-
Selecione as opções desejadas na página Configure stack options (Configurar opções de pilha) e depois escolha Next (Próximo).
-
Marque a caixa de seleção à esquerda de I acknowledge that AWS CloudFormation might create IAM resources. (Reconheço que o pode criar recursos do IAM) e escolha Create stack (Criar pilha).
-
Quando a criação da pilha for concluída, selecione-a no console e escolha Outputs (Saídas).
-
Registre o valor de NodeInstanceRole para o grupo de nós criado. Você precisará dele ao configurar os nós do Amazon EKS.
Etapa 2: Habilitar os nós a ingressar no cluster
nota
Se você iniciou os nós dentro de uma VPC privada sem acesso de saída à Internet, certifique-se de habilitá-los para ingressar no cluster pela VPC.
-
Verifique se você já tem um
aws-auth
ConfigMap
.kubectl describe configmap -n kube-system aws-auth
-
Se você receber um
aws-auth
ConfigMap
, atualize-o conforme necessário.-
Abra o
ConfigMap
para edição.kubectl edit -n kube-system configmap/aws-auth
-
Adicione uma nova
mapRoles
entrada conforme necessário. Defina o valorrolearn
para o valor NodeInstanceRole que você registrou no procedimento anterior.[...] data: mapRoles: |
- rolearn:
[...]<ARN of instance role (not instance profile)>
username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes -
Salve o arquivo e saia do seu editor de texto.
-
-
Se você recebeu um erro informando "
Error from server (NotFound): configmaps "aws-auth" not found
, aplique o estoqueConfigMap
.-
Faça download do mapa de configuração.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
-
No arquivo
, configure o valoraws-auth-cm.yaml
rolearn
para o valor NodeInstanceRole que você registrou no procedimento anterior. É possível fazer isso com um editor de texto ou substituindo
e executando o seguinte comando:my-node-instance-role
sed -i.bak -e 's|<ARN of instance role (not instance profile)>|
my-node-instance-role
|' aws-auth-cm.yaml -
Aplique a configuração. Esse comando pode demorar alguns minutos para ser concluído.
kubectl apply -f aws-auth-cm.yaml
-
-
Observe o status de seus nós e aguarde até que eles atinjam o status
Ready
.kubectl get nodes --watch
Insira
Ctrl
+C
para retornar a um prompt de shell.nota
Se você receber qualquer erro de autorização ou de tipo de recurso, consulte Acesso negado ou não autorizado (kubectl) no tópico de solução de problemas.
Se os nós não conseguirem se juntar ao cluster, consulte Worker nodes fail to join cluster (Falha nos nós ao ingressar no cluster) no capítulo Solução de problemas.
-
(Somente nós de GPU) Se tiver escolhido um tipo de instância de GPU e a AMI acelerada otimizada para o Amazon EKS, você deverá aplicar o Plug-in de dispositivo NVIDIA para Kubernetes
como um DaemonSet no cluster. Substitua
pela versão desejada de NVIDIA/k8s-device-pluginvX.X.X
antes de executar o comando a seguir. kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/
vX.X.X
/deployments/static/nvidia-device-plugin.yml
Etapa 3: Ações adicionais
-
(Opcional) Implante uma aplicação de amostra para testar o cluster e os nós do Linux.
-
(Opcional) Se a política do IAM gerenciada AmazonEKS_CNI_Policy (se você tiver um cluster
IPv4
) ou a
(que você mesmo criou caso tenha um clusterAmazonEKS_CNI_IPv6_Policy
IPv6
) estiver anexada à Perfil do IAM em nós do Amazon EKS, é recomendável atribuí-la a um perfil do IAM que você associará à conta de serviçoaws-node
do Kubernetes. Para ter mais informações, consulte Configurar o plug-in CNI da Amazon VPC para usar IRSA. Convém bloquear o acesso para Pod ao IMDS se as condições a seguir forem verdadeiras:
Você planeja atribuir perfis do IAM a todas as contas de serviço do Kubernetes para que os Pods tenham apenas as permissões mínimas de que precisam.
Nenhum dos Pods do cluster requer acesso ao serviço de metadados de instâncias do Amazon EC2 (IMDS) por outros motivos, como recuperar a Região da AWS atual.
Para obter mais informações, consulte Restringir o acesso ao perfil da instância atribuído ao nó de processamento
.
-