Defina quais Pods usarão o AWS Fargate quando em execução - 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.

Defina quais Pods usarão o AWS Fargate quando em execução

Importante

O AWS Fargate com o Amazon EKS não está disponível para a AWS GovCloud (Leste dos EUA) e AWS GovCloud (Oeste dos EUA).

Antes de agendar Pods no Fargate no cluster, você deve definir pelo menos um perfil do Fargate que especifique quais Pods usam o Fargate quando iniciados.

Como administrador, é possível usar um perfil do Fargate para declarar quais Pods devem ser executados no Fargate. É possível fazer isso por meio dos seletores de perfil. É possível adicionar até cinco seletores a cada perfil. Cada seletor deve conter um namespace. O seletor também pode incluir rótulos. O campo de rótulo consiste em vários pares de chave-valor opcionais. Os pods que correspondem aos seletores são programados no Fargate. Os pods são correspondidos usando um namespace e os rótulos que são especificados no seletor. Se um seletor de namespace for definido sem rótulos, o Amazon EKS tenta agendar todos os Pods que são executados nesse namespace para Fargate usando o perfil. Se um Pod a ser agendado corresponder a qualquer um dos seletores no perfil do Fargate, esse Pod será agendado no Fargate.

Se um Pod corresponder a vários perfis do Fargate, será possível especificar qual perfil um Pod usará adicionando o seguinte rótulo de Kubernetes para a especificação do Pod: eks.amazonaws.com/fargate-profile: my-fargate-profile. O Pod deve corresponder a um seletor nesse perfil para ser agendado no Fargate. As regras de afinidade e antiafinidade do Kubernetes não são levadas em consideração e não são necessárias com Pods do Amazon EKS Fargate.

Ao criar um perfil do Fargate, é necessário especificar uma função de execução do Pod. Essa função de execução é para os componentes do Amazon EKS que são executados na infraestrutura do Fargate usando o perfil. Ela é adicionada ao Controle de acesso com base em função (RBAC) do Kubernetes do cluster para autorização. Dessa forma, o kubelet que está sendo executado na infraestrutura do Fargate pode ser registrado no cluster do Amazon EKS e aparede no cluster como um nó. A função de execução de Pod também fornece permissões do IAM para a infraestrutura do Fargate para permitir acesso de leitura aos repositórios de imagens do Amazon ECR. Para obter mais informações, consulte Perfil do IAM para execução de Pod do Amazon EKS.

Os perfis do Fargate não podem ser alterados. No entanto, é possível criar um perfil atualizado para substituir um perfil existente e excluir o original.

nota

Qualquer Pods que esteja sendo executado usando um perfil do Fargate será interrompido e colocado como pendente quando o perfil for excluído.

Se algum perfil do Fargate em um cluster estiver no status DELETING, será necessário aguardar até que a exclusão do perfil do Fargate seja concluída para poder criar qualquer outro perfil nesse cluster.

O Amazon EKS e o Fargate tentam distribuir Pods por todas as sub-redes definidas no perfil do Fargate. No entanto, é possível acabar com uma distribuição desigual. Se você precisar ter uma distribuição uniforme, use dois perfis do Fargate. A distribuição uniforme é importante em cenários em que você deseja implantar duas réplicas e não quer nenhum tempo de inatividade. Recomendamos que cada perfil tenha apenas uma sub-rede.

Componentes do perfil do Fargate

Os componentes a seguir estão contidos em um perfil do Fargate.

Função de execução de pod

Quando o cluster cria Pods no AWS Fargate, o kubelet sendo executado na infraestrutura do Fargate precisa fazer as chamadas para as APIs da AWS em seu nome. Por exemplo, ele precisa fazer chamadas para extrair imagens de contêiner do Amazon ECR. A função de execução de Pod do Amazon EKS fornece as permissões do IAM para isso.

Ao criar um perfil do Fargate, é necessário especificar uma função de execução de Pod para ser usada com os Pods. Essa função é adicionada ao Kubernetes Controle de acesso com base em função (RBAC) do cluster para autorização. Isso permite que o kubelet que está sendo executado na infraestrutura do Fargate possa ser registrado no cluster do Amazon EKS e apareça no cluster como um nó. Para obter mais informações, consulte Perfil do IAM para execução de Pod do Amazon EKS.

Sub-redes

Os IDs das sub-redes nas quais iniciar Pods que usam esse perfil. No momento, não são atribuídos endereços IP públicos aos Pods sendo executados no Fargate. Portanto, somente sub-redes privadas (sem rota direta para um gateway da Internet) são aceitas para esse parâmetro.

Seletores

Os seletores para encontrar os Pods correspondentes para usar esse perfil do Fargate. É possível especificar até cinco seletores em um perfil do Fargate. Os seletores têm os seguintes componentes:

  • Namespace: é necessário especificar um namespace para um seletor. O seletor corresponde apenas a Pods que são criados nesse namespace. No entanto, é possível criar vários seletores para visar a vários namespaces.

  • Rótulos: se preferir, você poderá especificar rótulos do Kubernetes para corresponder ao seletor. O seletor só busca correspondências com Pods que tenham todos os rótulos especificados no seletor.

Curingas do perfil do Fargate

Além dos caracteres permitidos pelo Kubernetes, você está autorizado a usar * e ? nos critérios do seletor para namespaces, chaves de rótulos e valores de rótulos:

  • * representa nenhum, um ou vários caracteres. Por exemplo, prod* pode representar prod e prod-metrics.

  • ? representa um único caractere (por exemplo, value? pode representar valuea). Porém, não pode representar value e value-a, porque ? só pode representar exatamente um único caractere.

Esses caracteres curinga podem ser usados em qualquer posição e em combinação (por exemplo, prod*, *dev e frontend*?). Outros curingas e outras formas de correspondência de padrões, como expressões regulares, não são compatíveis.

Se houver vários perfis correspondentes para o namespace e os rótulos na especificação do Pod, o Fargate selecionará o perfil com base na classificação alfanumérica pelo nome do perfil. Por exemplo, se ambos os perfis A (com o nome beta-workload) e B (com o nome prod-workload) tiverem seletores correspondentes para os Pods a serem lançados, o Fargate escolherá o perfil A (beta-workload) para os Pods. Os Pods têm rótulos com o perfil A nos Pods (por exemplo, eks.amazonaws.com/fargate-profile=beta-workload).

Se você quiser migrar os Pods existentes do Fargate para novos perfis que usem curingas, há duas maneiras de fazer isso:

  • Crie um novo perfil com seletores correspondentes e exclua os perfis antigos. Os pods rotulados com perfis antigos serão reprogramados para novos perfis correspondentes.

  • Se você quiser migrar workloads, mas não tiver certeza de quais rótulos do Fargate estão em cada Pod do Fargate, será possível usar o método a seguir. Crie um novo perfil com um nome que seja classificado em ordem alfanumérica primeiro entre os perfis no mesmo cluster. Em seguida, recicle os Pods do Fargate que precisem ser migrados para novos perfis.

Criar um perfil do Fargate

Esta seção descreve como criar um perfil do Fargate. Você também deve ter criado uma função de execução de Pod a ser usada para o perfil do Fargate. Para obter mais informações, consulte Perfil do IAM para execução de Pod do Amazon EKS. Pods em execução no Fargate apenas compatíveis apenas em sub-redes privadas com acesso via gateway NAT a serviços da AWS, mas não com uma rota direta para um gateway da Internet. Isso ocorre para que a VPC do seu cluster tenha sub-redes privadas disponíveis. Você pode criar um perfil com o eksctl ou o AWS Management Console.

eksctl

Para criar um perfil do Fargate com o eksctl

Crie o perfil do Fargate com o comando eksctl a seguir, substituindo cada example value por seus próprios valores. Você precisa especificar um namespace. Mas, a opção --labels não é exigida.

eksctl create fargateprofile \ --cluster my-cluster \ --name my-fargate-profile \ --namespace my-kubernetes-namespace \ --labels key=value

É possível usar certos curingas para rótulos my-kubernetes-namespace e key=value . Para obter mais informações, consulte Curingas do perfil do Fargate.

AWS Management Console
Como criar um perfil do Fargate para um cluster com o AWS Management Console
  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  2. Escolha o cluster para o qual deve ser criado um perfil do Fargate.

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

  4. Em Fargate profile (Perfil 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 de execução de Pod que deve ser usada com o perfil do Fargate. Somente funções do IAM com o principal de serviço do eks-fargate-pods.amazonaws.com são mostradas. Se nenhuma função estiver listada, você deve criar uma. Para obter mais informações, consulte Perfil do IAM para execução de Pod do Amazon EKS.

    3. Modifique as sub-redes selecionadas conforme necessário.

      nota

      Somente sub-redes privadas são compatíeis com Pods em execução no Fargate.

    4. Em Tags (Etiquetas), você tem a opção de etiquetar o perfil do Fargate. Essas tags não são propagadas para outros recursos associados ao perfil, como Pods.

    5. Escolha Próximo.

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

    1. Em Namespace, insira um namespace para fazer a correspondência com Pods.

      • É possível usar namespaces específicos para a correspondência, como kube-system ou default.

      • É possível usar certos curingas (por exemplo, prod-*) para fazer a correspondência com vários namespaces (por exemplo, prod-deployment e prod-test). Para obter mais informações, consulte Curingas do perfil do Fargate.

    2. (Opcional) Adicione rótulos Kubernetes ao seletor. Adicione-os especificamente ao seletor ao qual os Pods no namespace especificado precisam corresponder.

      • É possível adicionar o rótulo infrastructure: fargate ao seletor para que somente Pods no namespace especificado que também tenham o rótulo Kubernetes do infrastructure: fargate correspondam ao seletor.

      • É possível usar certos curingas (por exemplo, key?: value?) para fazer a correspondência com vários namespaces (por exemplo, keya: valuea e keyb: valueb). Para obter mais informações, consulte Curingas do perfil do Fargate.

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