Conceitos básicos do Amazon EKS - eksctl - Amazon EKS

Conceitos básicos do Amazon EKS - eksctl

Este manual ajuda você a criar todos os recursos necessários para começar a usar o Amazon Elastic Kubernetes Service (Amazon EKS) com o eksctl, um utilitário de linha de comando simples para criar e gerenciar clusters de Kubernetes no Amazon EKS. No final deste tutorial, você terá um cluster do Amazon EKS em execução, no qual poderá implantar as aplicações.

Os procedimentos neste guia criam automaticamente vários recursos que você precisa criar manualmente ao criar o cluster usando o comando AWS Management Console. Se preferir criar manualmente a maioria dos recursos e entender melhor como eles interagem entre si, use o AWS Management Console para criar os clusters e a computação. Para obter mais informações, consulte Conceitos básicos do Amazon EKS - AWS Management Console e AWS CLI.

Prerequisites

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.

  • kubectl – Uma ferramenta de linha de comando para trabalhar com clusters do Kubernetes. Este manual requer que você use a versão 1.21 ou posterior. Para obter mais informações, consulte Instalação do kubectl.

  • eksctl – Uma ferramenta de linha de comando para trabalhar com clusters EKS que automatiza várias tarefas individuais. Este manual requer que você use a versão 0.58.0 ou posterior. Para obter mais informações, consulte O utilitário de linha de comando eksctl.

  • Permissões obrigatórias do IAM: o principal de segurança do IAM que você está usando deve ter permissões para trabalhar com funções do Amazon EKS IAM e funções vinculadas ao serviço, o AWS CloudFormation e uma VPC com recursos relacionados. Para obter mais informações, consulte Actions, resources, and condition keys for Amazon Elastic Container Service for Kubernetes (Ações, recursos e chaves de condição do Amazon Elastic Container Service for Kubernetes) e Using service-linked roles (Usar funções vinculadas a serviço) no Manual do usuário do IAM. Você deve concluir todas as etapas deste manual como o mesmo usuário.

Etapa 1: Criar o cluster e nós do Amazon EKS

Crie clusters e nós.

Importante

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

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 – Selecione este tipo de nó se você quiser executar aplicações Linux no AWS Fargate.

  • Nós gerenciados – Linux – Selecione este tipo de nó se você quiser executar aplicações do Amazon Linux em instâncias do Amazon EC2. Embora não seja abordado neste guia, também é possível usar os nós Autogerenciado do Windows e Bottlerocket para o cluster. Um cluster deve conter pelo menos um nó do Linux, mesmo se todas as workloads forem do Windows.

Selecione a guia com o nome do tipo de nó que você deseja criar.

Fargate – Linux

Para criar seu cluster com nós do Fargate do Linux

  1. Crie seu cluster do Amazon EKS com um AWS Perfil do Fargate e Função de execução de pod com o comando a seguir. Substitua my-cluster pelos seus próprios valores. Embora você possa criar um cluster em qualquer Região compatível com o Amazon EKS, neste tutorial, ele é criado no Oeste dos EUA (Oregon) us-west-2.

    eksctl create cluster \ --name my-cluster \ --region us-west-2 \ --fargate

    O comando anterior cria um cluster e um perfil do Fargate usando principalmente as configurações padrão. Após a conclusão da criação, visualize a pilha chamada eksctl-<my-cluster>-cluster no AWS CloudFormation para revisar todos os recursos que foram criados. Para obter uma lista de todas as configurações e opções, insira eksctl create cluster -h. Para obter a documentação de todas as configurações e opções, consulte Creating and Managing Clusters (Criar e gerenciar clusters) na documentação do eksctl.

    Resultado

    Você verá várias linhas de resultado à medida que os perfis do cluster e do Fargate forem são criados. A criação leva alguns minutos. A última linha de saída é semelhante ao exemplo de linha a seguir.

    ... [✓] EKS cluster "my-cluster" in "us-west-2" region is ready

    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 manual de solução de problemas.

    eksctl criou um arquivo kubectl config em ~/.kube ou adicionou a configuração do novo cluster dentro de um arquivo config em ~/.kube.

  2. Teste a configuração.

    kubectl get svc

    Resultado

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

Para criar o cluster com nós gerenciados do Amazon EC2 Linux

Crie o cluster do e o grupo de nós gerenciados do Linux. Substitua my-cluster pelos seus próprios valores.

Substitua <your-key> (incluindo <>) pelo nome de um par de chaves existente. Se você ainda não tiver um par de chaves, poderá criar um usando o comando a seguir. Se necessário, altere us-west-2 para a região na qual você cria o cluster. Salve o resultado retornado em um arquivo no computador local. Para obter informações, consulte Creating or importing a key pair (Criar ou importar pares de chaves) no Manual do usuário do Amazon EC2 para instâncias do Linux. Embora a chave não seja necessária neste manual, você só pode especificar uma chave a ser usada ao criar o grupo de nós. Especificar a chave permite que você use SSH para nós depois que eles forem criados. Para executar o comando, você precisa ter a AWS CLI versão 2.2.22 ou posterior ou 1.20.6 ou posterior. 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.

aws ec2 create-key-pair --region us-west-2 --key-name myKeyPair

Crie o cluster e os nós com o comando a seguir. Substitua <example values> (incluindo <>) pelos seus próprios valores. Embora você possa criar um cluster em qualquer Região compatível com o Amazon EKS, neste tutorial, ele é criado no Oeste dos EUA (Oregon) us-west-2.

eksctl create cluster \ --name my-cluster \ --region us-west-2 \ --with-oidc \ --ssh-access \ --ssh-public-key <your-key> \ --managed

O comando anterior cria um cluster usando principalmente as configurações padrão do Amazon EKS. Para ver todos os recursos criados, exiba a pilha chamada eksctl-<my-cluster>-cluster no console doAWS CloudFormation, em https://console.aws.amazon.com/cloudformation. Para obter uma lista de todas as configurações e opções, insira eksctl create cluster -h. Para obter a documentação de todas as configurações e opções, consulte Creating and Managing Clusters (Criar e gerenciar clusters) na documentação do eksctl.

Resultado

Você verá várias linhas de resultado à medida que os nós e o cluster forem criados. A criação de clusters e nós normalmente leva alguns minutos. A última linha de saída é semelhante ao exemplo de linha a seguir.

... [✓] EKS cluster "my-cluster" in "us-west-2" region is ready

eksctl criou um arquivo kubectl config em ~/.kube ou adicionou a configuração do novo cluster dentro de um arquivo config em ~/.kube.

Etapa 2: Visualizar recursos

  1. Exiba os nós de cluster.

    kubectl get nodes -o wide

    Saída do nó do Amazon EC2

    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME ip-192-168-12-49.us-west-2.compute.internal Ready <none> 6m7s v1.18.9-eks-d1db3c 192.168.12.49 52.35.116.65 Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 docker://19.3.6 ip-192-168-72-129.us-west-2.compute.internal Ready <none> 6m4s v1.18.9-eks-d1db3c 192.168.72.129 44.242.140.21 Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 docker://19.3.6

    Saída do nó do Fargate

    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME fargate-ip-192-168-141-147.us-west-2.compute.internal Ready <none> 8m3s v1.18.8-eks-7c9bda 192.168.141.147 <none> Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 containerd://1.3.2 fargate-ip-192-168-164-53.us-west-2.compute.internal Ready <none> 7m30s v1.18.8-eks-7c9bda 192.168.164.53 <none> Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 containerd://1.3.2

    Para obter mais informações sobre o que você vê aqui, consulte Previsualizar os nós.

  2. Exiba as workloads em execução no cluster.

    kubectl get pods --all-namespaces -o wide

    Saída do Amazon EC2

    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system aws-node-6ctpm 1/1 Running 0 7m43s 192.168.72.129 ip-192-168-72-129.us-west-2.compute.internal <none> <none> kube-system aws-node-cbntg 1/1 Running 0 7m46s 192.168.12.49 ip-192-168-12-49.us-west-2.compute.internal <none> <none> kube-system coredns-559b5db75d-26t47 1/1 Running 0 14m 192.168.78.81 ip-192-168-72-129.us-west-2.compute.internal <none> <none> kube-system coredns-559b5db75d-9rvnk 1/1 Running 0 14m 192.168.29.248 ip-192-168-12-49.us-west-2.compute.internal <none> <none> kube-system kube-proxy-l8pbd 1/1 Running 0 7m46s 192.168.12.49 ip-192-168-12-49.us-west-2.compute.internal <none> <none> kube-system kube-proxy-zh85h 1/1 Running 0 7m43s 192.168.72.129 ip-192-168-72-129.us-west-2.compute.internal <none> <none>

    Saída do Fargate

    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system coredns-69dfb8f894-9z95l 1/1 Running 0 18m 192.168.164.53 fargate-ip-192-168-164-53.us-west-2.compute.internal <none> <none> kube-system coredns-69dfb8f894-c8v66 1/1 Running 0 18m 192.168.141.147 fargate-ip-192-168-141-147.us-west-2.compute.internal <none> <none>

    Para obter mais informações sobre o que você vê aqui, consulte Visualizar workloads.

Etapa 3: excluir clusters e nós

Após concluir o cluster e os nós criados para este tutorial, faça uma limpeza excluindo o cluster e os nós. Se você quiser realizar outras ações com esse cluster antes de limpá-lo, consulte Próximas etapas.

Exclua clusters e nós.

eksctl delete cluster --name my-cluster --region us-west-2

Próximas etapas

Agora que você tem um cluster do Amazon EKS com nós, você está pronto para iniciar a instalação dos complementos do Kubernetes e implantar aplicações no cluster. Os seguintes tópicos de documentação ajudam a estender a funcionalidade do seu cluster.