Conceitos básicos do Amazon EKS - AWS Management Console e AWS CLI - 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.

Conceitos básicos do Amazon EKS - AWS Management Console e AWS CLI

Este manual ajuda a criar todos os recursos necessários para começar a usar o Amazon Elastic Kubernetes Service (Amazon EKS) com o AWS Management Console e o AWS CLI. Neste manual, você criará manualmente cada recurso. No final deste tutorial, você terá um cluster do Amazon EKS em execução, no qual poderá implantar as aplicações.

Os procedimentos deste guia fornecem visibilidade completa sobre como cada recurso é criado e como os recursos interagem entre si. Se você preferir que a maioria dos recursos seja criada automaticamente, use a CLI eksctl para criar os nós e o cluster. Para ter mais informações, consulte Conceitos básicos do Amazon EKS - eksctl.

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.

  • AWS CLI – Uma ferramenta de linha de comando para trabalhar com os serviços AWS, incluindo o Amazon EKS. Para obter mais informações, consulte Installing, updating, and uninstalling the AWS CLI (Instalar, atualizar e desinstalar a ) no Manual do usuário da AWS Command Line Interface. Depois de instalar a AWS CLI, recomendamos que você também a configure. Para obter mais informações, consulte Quick configuration with aws configure (Configuração rápida com ) no Manual do usuário do AWS Command Line Interface.

  • kubectl: uma ferramenta de linha de comando para trabalhar com clusters do Kubernetes. Para ter mais informações, consulte Instalar ou atualizar o kubectl.

  • Permissões obrigatórias do IAM: a entidade principal de segurança do IAM que você está usando deve ter permissões para trabalhar com perfis do IAM para o Amazon EKS e 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. Você deve concluir todas as etapas deste manual como o mesmo usuário. Execute o seguinte comando para verificar o usuário atual:

    aws sts get-caller-identity
  • Convém concluir as etapas neste tópico em um shell Bash. Se não estiver utilizando um shell Bash, alguns comandos de script, como caracteres de continuação de linha e a forma como as variáveis são definidas e utilizadas, exigirão o ajuste do seu shell. Além disso, as regras de citação e de escape do seu shell podem ser diferentes. Para obter mais informações, consulte Uso de aspas com strings na AWS CLI no Guia do usuário da AWS Command Line Interface.

Etapa 1: Criar o cluster do Amazon EKS

Importante

Para começar da forma mais simples e rápida possível, este tópico inclui etapas para criar um cluster com configurações padrão. 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 ter mais informações, consulte Criar um cluster do Amazon EKS. Algumas configurações poderão ser habilitadas apenas durante a criação do cluster.

Para criar um cluster
  1. Crie uma Amazon VPC com sub-redes públicas e privadas que atenda aos requisitos do Amazon EKS. 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 de referência geral da AWS. Você pode substituir my-eks-vpc-stack por qualquer nome que escolher.

    aws cloudformation create-stack \ --region region-code \ --stack-name my-eks-vpc-stack \ --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
    dica

    Para obter uma lista de todos os recursos que o comando anterior cria, abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation. Escolha a pilha my-eks-vpc-stack e depois a guia Resources (Recursos).

  2. Crie um perfil do IAM de cluster e anexe a ele a política gerenciada pelo IAM no Amazon EKS requerida. 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. Copie o conteúdo a seguir em um arquivo denominado eks-cluster-role-trust-policy.json.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Crie a função.

      aws iam create-role \ --role-name myAmazonEKSClusterRole \ --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    3. 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 myAmazonEKSClusterRole
  3. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

    Verifique se a Região da AWS exibida no canto superior direito do seu console é a Região da AWS em que você deseja criar o cluster. Se não for, escolha a lista suspensa ao lado do nome da Região da AWS e, em seguida, a Região da AWS que deseja usar.

  4. Escolha Add cluster (Adicionar cluster) e, em seguida, Create (Criar). Caso não visualize essa opção, escolha Clusters no painel de navegação à esquerda.

  5. Na página Configure cluster (Configurar cluster), faça o seguinte:

    1. Insira um nome para o seu cluster, como my-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.

    2. Em Cluster Service Role (Função de serviço do cluster), escolha myAmazonEKSClusterRole.

    3. Deixe as configurações restantes com seus valores padrão e escolha Next (Próximo).

  6. Na página Specify networking (Especificar redes), faça o seguinte:

    1. Escolha o ID da VPC que você criou em uma etapa anterior na lista suspensa VPC. É algo como vpc-00x0000x000x0x000 | my-eks-vpc-stack-VPC.

    2. Deixe as configurações restantes com seus valores padrão e escolha Next (Próximo).

  7. Na página Configurar observabilidade, escolha Próximo.

  8. Na página Selecionar complementos, selecione Avançar.

    Para obter mais informações sobre complementos, consulte Complementos do Amazon EKS.

  9. Na página Definir as configurações dos complementos selecionados, escolha Avançar.

  10. Na página Review and create (Revisar e criar), escolha Create (Criar).

    À direita do nome do cluster, o status do cluster será Creating (Em criação) por vários minutos, até que o processo de provisionamento do cluster seja concluído. Não passe para a próxima etapa até que o status seja Active (Ativo).

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

Etapa 2: Configurar o computador para se comunicar com seu cluster

Nesta seção, você cria um arquivo kubeconfig para o cluster. As configurações neste arquivo ativam a opção CLI do kubectl para se comunicar com o cluster.

Para configurar o computador para se comunicar com o cluster
  1. Crie um arquivo kubeconfig para o cluster. Substitua region-code pela Região da AWS na qual você criou o cluster. Substitua o my-cluster pelo nome do cluster.

    aws eks update-kubeconfig --region region-code --name my-cluster

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

  2. Teste a configuração.

    kubectl get svc
    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.

    Veja um exemplo de saída abaixo.

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

Etapa 3: criar nós

Importante

Para começar da forma mais simples e rápida possível, este tópico inclui etapas para criar nós com configurações padrão. Antes de criar nós para uso em produção, recomendamos que você se familiarize com todas as configurações e implante nós com as configurações que atendam aos seus requisitos. Para ter mais informações, consulte Nós do Amazon EKS. Algumas configurações poderão ser habilitadas apenas durante a criação dos nós.

Você pode criar um cluster com um dos seguintes tipos de nós. Para saber mais sobre cada tipo, consulte Nós do Amazon EKS. Depois que o cluster for implantado, você pode adicionar outros tipos de nós.

  • Fargate: Linux: escolha este tipo de nó se quiser executar aplicações do Linux no AWS Fargate. O Fargate é um mecanismo de computação com tecnologia sem servidor que permite a implantação de Pods do Kubernetes sem gerenciar instâncias do Amazon EC2.

  • Nós gerenciados: Linux: escolha este tipo de nó se quiser executar aplicações do Amazon Linux em instâncias do Amazon EC2. Embora não abordado neste guia, você também pode adicionar nós autogerenciados do Windows e Bottlerocket ao cluster.

Fargate – Linux

Criar um perfil do Fargate. Quando os Pods do Kubernetes são implantados com critérios que correspondem aos critérios definidos no perfil, Pods são implantados no Fargate.

Para criar um perfil do Fargate
  1. Crie uma função do IAM de cluster e associe a política gerenciada do Amazon EKS IAM a ela. Quando o cluster cria Pods na infraestrutura do Fargate, os componentes que estão em execução nessa infraestrutura do Fargate devem fazer as chamadas para as APIs da AWS em seu nome. Isso ocorre para que eles possam realizar ações como extrair imagens de contêiner do Amazon ECR ou encaminhar logs para outros serviços da AWS. A função de execução de Pod do Amazon EKS fornece as permissões do IAM para isso.

    1. Copie o conteúdo a seguir em um arquivo denominado pod-execution-role-trust-policy.json. Substitua region-code pela Região da AWS em que seu cluster está localizado. Se quiser utilizar a mesma função em todas as Regiões da AWS da sua conta, substitua region-code por *. Substitua 111122223333 pelo ID da conta e my-cluster pelo nome do cluster. Se quiser usar a mesma função para todos os clusters da sua conta, substitua my-cluster por *.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Crie um perfil do IAM de execução de Pod.

      aws iam create-role \ --role-name AmazonEKSFargatePodExecutionRole \ --assume-role-policy-document file://"pod-execution-role-trust-policy.json"
    3. Anexe a política de IAM gerenciada pelo Amazon EKS à função.

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \ --role-name AmazonEKSFargatePodExecutionRole
  2. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  3. Na página Clusters, escolha o cluster my-cluster.

  4. Na página my-cluster, faça o seguinte:

    1. Escolha a guia Compute (Computação).

    2. Em Fargate Profiles (Perfis do Fargate), escolha Add Fargate profile (Adicionar perfil do Fargate).

  5. Na página Configure Fargate Profile (Configurar o perfil do Fargate), faça o seguinte:

    1. Em Name (Nome), insira um nome exclusivo para o perfil do Fargate, como my-profile.

    2. Em Pod execution role (Função de execução de pod), escolha a função AmazonEKSFargatePodExecutionRole criada em uma etapa anterior.

    3. Escolha a lista suspensa Subnets (Sub-redes) e desmarque qualquer sub-rede que tenha Public no nome. Somente sub-redes privadas são compatíeis com Pods em execução no Fargate.

    4. Escolha Próximo.

  6. Na página Configure Pod selection (Configurar a seleção de ), faça o seguinte:

    1. Em Namespace, insira default.

    2. Escolha Próximo.

  7. Na página Review and create (Revisar e criar), revise as informações do perfil do Fargate e selecione Create (Criar).

  8. Após alguns minutos, o Status na seção Fargate Profile configuration (Configuração do perfil do Fargate) será alterada de Creating (Em criação) para Active (Ativo). Não passe para a próxima etapa até que o status seja Active (Ativo).

  9. Se você planeja implantar todos os Pods no Fargate (nenhum em nós do Amazon EC2), use o procedimento a seguir para criar outro perfil do Fargate e executar o resolvedor de nomes padrão (CoreDNS) no Fargate.

    nota

    Se você não fizer isso, não obterá nenhum nó no momento.

    1. Na página Fargate Profile (Perfil do Fargate), escolha my-profile.

    2. Em Fargate profiles (Perfis do Fargate), escolha Add Fargate profile (Adicionar perfil do Fargate).

    3. Em Nome, digite CoreDNS.

    4. Em Pod execution role (Função de execução de pod), escolha a função AmazonEKSFargatePodExecutionRole criada em uma etapa anterior.

    5. Escolha a lista suspensa Subnets (Sub-redes) e desmarque qualquer sub-rede que tenha Public no nome. Somente sub-redes privadas são compatíveis com os Pods em execução no Fargate.

    6. Escolha Próximo.

    7. Em Namespace, insira kube-system.

    8. Escolha Match labels (Rótulos de correspondência) e, em seguida, Add label (Adicionar rótulo).

    9. Insira k8s-app em Key (Chave) e kube-dns em value (valor). Isso é necessário para implantar o resolvedor de nomes padrão (CoreDNS) no Fargate.

    10. Escolha Próximo.

    11. Na página Review and create (Revisar e criar), revise as informações do perfil do Fargate e selecione Create (Criar).

    12. Depois, use o comando a seguir para remover a anotação padrão eks.amazonaws.com/compute-type : ec2 do CoreDNS e do Pods.

      kubectl patch deployment coredns \ -n kube-system \ --type json \ -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
    nota

    O sistema cria e implanta dois nós com base no rótulo de perfil do Fargate adicionado por você. Você não verá nada listado em Node Groups (Grupos de nós) porque eles não são aplicáveis aos nós do Fargate, mas encontrará os novos nós listados na guia Overview (Visão geral).

Managed nodes – Linux

Crie um grupo de nós gerenciados, especificando as sub-redes e a função do IAM do nó que você criou nas etapas anteriores.

Para criar o grupo de nós gerenciados do Amazon EC2 Linux
  1. Crie uma função do IAM do nó e associe a política gerenciada do Amazon EKS IAM a ela. O daemon kubelet do nó do Amazon EKS chama as APIs da AWS em seu nome. Os nós recebem permissões para essas chamadas de API por meio de um perfil de instância do IAM e políticas associadas.

    1. Copie o conteúdo a seguir em um arquivo denominado node-role-trust-policy.json.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Crie a função do IAM para o nó.

      aws iam create-role \ --role-name myAmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-policy.json"
    3. Anexe à função as políticas do IAM gerenciadas necessárias.

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name myAmazonEKSNodeRole
  2. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  3. Escolha o nome do cluster criado por você no Etapa 1: Criar o cluster do Amazon EKS, por exemplo, my-cluster.

  4. Na página my-cluster, faça o seguinte:

    1. Escolha a guia Compute (Computação).

    2. Escolha Add Node Group (Adicionar grupo de nós).

  5. Na página Configure Node Group (Configurar grupo de nós), faça o seguinte:

    1. Em Name (Nome), insira um nome exclusivo para o seu grupo de nós gerenciados, como my-nodegroup. 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.

    2. Em Node IAM role name (Nome da função do IAM de nós), escolha a função myAmazonEKSNodeRole que você criou em uma etapa anterior. Recomendamos que cada grupo de nós use sua própria função exclusiva do IAM.

    3. Escolha Próximo.

  6. Na página Set compute and scaling configuration (Definir configurações de computação e escalabilidade), aceite os valores padrão e escolha Next (Próximo).

  7. Na página Specify networking (Especificar redes), aceite os valores padrão e escolha Next (Próximo).

  8. Na página Review and create (Revisar e criar), reveja a configuração do grupo de nós gerenciados e escolha Create (Criar).

  9. Após alguns minutos, o Status em Node Group configuration(Configuração do grupo de nós) mudará de Creating (Em criação) para Active (Ativo). Não passe para a próxima etapa até que o status seja Active (Ativo).

Etapa 4: visualizar recursos

Você pode exibir os nós e as workloads do Kubernetes.

Para visualizar nós e workloads
  1. No painel de navegação à esquerda, escolha Clusters. Escolha o nome do cluster criado por você, por exemplo, my-cluster, na lista de Clusters.

  2. Na página my-cluster, escolha o seguinte:

    1. Guia Compute (Computação): você verá a lista Nodes (Nós) de nós que foram implantados para o cluster. Você pode escolher o nome de um nó para consultar mais informações sobre ele.

    2. Guia Resources (Recursos): você verá todos os recursos Kubernetes implantados por padrão em um cluster do Amazon EKS. Selecione qualquer tipo de recurso no console para obter mais informações sobre ele.

Etapa 5: excluir recursos

Após concluir o cluster e os nós criados para este tutorial, exclua os recursos que você criou. Se quiser realizar outras ações com esse cluster antes de excluir os recursos, consulte Próximas etapas.

Para excluir os recursos que você criou neste guia
  1. Exclua todos os grupos de nós ou perfis do Fargate que criou.

    1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

    2. No painel de navegação à esquerda, escolha Clusters. Na lista de clusters, escolha my-cluster.

    3. Escolha a guia Compute (Computação).

    4. Se você criou um grupo de nós, scolha o grupo de nós my-nodegroup e depois escolha Delete (Excluir). Insira my-nodegroup e escolha Delete (Excluir).

    5. Escolha-o para cada perfil do Fargate criado por você e, então, escolha Delete (Excluir). Insira o nome do perfil e, então, escolha Delete (Excluir).

      nota

      Ao excluir um segundo perfil do Fargate, talvez seja necessário esperar a conclusão de exclusão do primeiro.

    6. Não continue até que o grupo de nós ou perfis do Fargate estejam excluído(s).

  2. Excluir o cluster.

    1. No painel de navegação à esquerda, escolha Clusters. Na lista de clusters, escolha my-cluster.

    2. Escolha Delete Cluster (Excluir cluster).

    3. Insira my-cluster e escolha Delete (Excluir). Não continue até que o cluster seja excluído.

  3. Exclua a pilha do AWS CloudFormation da VPC criada.

    1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

    2. Escolha a pilha my-eks-vpc-stack e depois Delete (Excluir).

    3. Na caixa de diálogo de confirmação Delete my-eks-vpc-stack (Excluir o my-eks-vpc-stack), escolha Delete stack (Excluir pilha).

  4. Exclua as funções do IAM criadas.

    1. Abra o console IAM em https://console.aws.amazon.com/iam/.

    2. No painel de navegação à esquerda, escolha Roles.

    3. Na lista, selecione cada função criada (myAmazonEKSClusterRole, bem como AmazonEKSFargatePodExecutionRole ou myAmazonEKSNodeRole). Escolha Delete (Excluir), insira o texto de confirmação solicitado e escolha Delete (Excluir).

Próximas etapas

Os seguintes tópicos de documentação ajudam a estender a funcionalidade do seu cluster: