Ir para o conteúdo

Como soluciono problemas ao criar um perfil do AWS Fargate?

6 minuto de leitura
0

Tenho dúvidas sobre a criação de um perfil do AWS Fargate.

Breve descrição

Um perfil do Fargate é um mecanismo para especificar quais pods devem ser agendados em nós do Fargate em um cluster do Amazon Elastic Kubernetes Service (Amazon EKS).

Um perfil do Fargate tem seletores que são combinados com todos os arquivos YAML de especificação de pod de entrada. Se a correspondência for bem-sucedida e as considerações do AWS Fargate forem atendidas, o pod será agendado nos nós do Fargate. O pod é programado com sub-redes e o perfil do AWS Identity and Access Management (IAM) especificada no perfil do Fargate.

Algumas das regras de posicionamento do pod são as seguintes:

  • Se a especificação de um pod tiver um namespace e uma configuração de rótulo de correspondência, o pod será colocado no perfil do Fargate que corresponda ao namespace. A especificação do pod também deve corresponder aos rótulos do seletor de pod
  • Se o perfil do Fargate tiver várias configurações de seletor de pod, o pod agendado que corresponda a qualquer uma das configurações do seletor de pod será usado.
  • Se a especificação de um pod corresponde a vários perfis do Fargate, o pod será agendado de acordo com um perfil aleatório do Fargate. Isso ocorre a menos que a seguinte anotação seja especificada na especificação do pod: eks.amazonaws.com/fargate-profile.
  • As regras de afinidade e antiafinidade do Kubernetes não se aplicam e não são necessárias com os pods Fargate do Amazon EKS.

Resolução

A seguir estão os problemas comuns encontrados ao criar um perfil do Fargate:

Como posso criar um perfil do Fargate para agendar pods nos nós do Fargate?

Você pode usar o console do Amazon EKS, a AWS Command Line Interface (AWS CLI), o SDK ou uma API para criar um perfil do Fargate.

Como posso criar um perfil do Fargate usando o AWS CloudFormation?

Você pode usar o tipo de recurso AWS::EKS::FargateProfile CloudFormation para criar um perfil do Fargate.

Como posso executar os pods do CoreDNS somente nos nós do Fargate?

Por padrão, o CoreDNS é configurado para ser executado na infraestrutura do Amazon EC2 em clusters do Amazon EKS. Se quiser executar os pods do CoreDNS na computação sem servidor do Fargate em seu cluster, você deve executar a reinicialização da implantação do CoreDNS.

Se criou seu cluster com eksctl e a opção**--fargate**, siga as ações em Próximas etapas.

Observação: é uma prática recomendada usar o eksctl para criar ou atualizar clusters do EKS porque isso simplifica a administração de recursos do cluster. Para obter mais informações, consulte o suporte do EKS Fargate no site eksctl.

Quais são os limites padrão para um perfil do Fargate?

Os limites padrão ao criar um perfil do Fargate são:

  • Um cluster EKS pode ter até dez perfis do Fargate.
  • O perfil do Fargate pode ter até cinco seletores.
  • O seletor de perfil do Fargate pode ter até cinco pares de etiquetas.

Qual função de execução do pod deve ser incluída no perfil do Fargate?

A função de execução do pod é um perfil do IAM usada pelo nó do Fargate para fazer chamadas de API da AWS. A política gerenciada AmazonEKSFargatePodExecutionRolePolicy deve ser anexada a essa função.

O Kubelet no nó do Fargate usa esse perfil do IAM para se comunicar com o servidor da API. Essa função deve ser incluída no aws-auth ConfigMap para que o Kubelet possa se autenticar com o servidor da API. Quando você cria um perfil do Fargate, o fluxo de trabalho do Fargate adiciona automaticamente essa função ao aws-auth ConfigMap do cluster.

Se seus nós do Fargate aparecerem como 'Não prontos', certifique-se de que a função de execução do pod esteja incluída no aws-auth ConfigMap.

Veja a seguir um exemplo de snippet do aws-auth ConfigMap mapRoles após a criação de um perfil do Fargate com uma função de execução de pod:

mapRoles: |       - groups:
      - system:bootstrappers
      - system:nodes
      - system:node-proxier
      rolearn: <Pod_execution_role_ARN>
      username: system:node:{{SessionName}}

Se o aws-auth ConfigMap for alterado após a criação do perfil do Fargate, você poderá receber esse aviso quando os pods nos nós do Fargate forem agendados:

Pod provisioning timed out (will retry) for pod: <pod_nginx>

Quero migrar workloads para o EKS Fargate. Como faço para criar sub-redes e grupos de segurança para uso?

O EKS Fargate suporta somente sub-redes privadas. Isso significa que não há uma rota padrão para o gateway da Internet nas tabelas de rotas anexadas às sub-redes especificadas em seu perfil do Fargate. Portanto, você pode ter um gateway NAT ou endpoints VPC configurados para as sub-redes que você pretende usar para o perfil do Fargate.

O grupo de segurança do cluster é, por padrão, anexado aos nós do Fargate. Você não precisa provisionar um grupo de segurança especificamente para essa finalidade.

Se usar endpoints VPC para suas sub-redes, certifique-se de que o cluster tenha o acesso ao endpoint privado ativado. O grupo de segurança anexado aos endpoints da VPC deve ter uma regra de entrada que permita o tráfego da porta 443 HTTPS do CIDR da VPC do cluster.

Criei perfis do Fargate com um provisionador baseado em API, como o Terraform ou o AWS CloudFormation. Por que meus perfis do Fargate estão no estado CREATE\ _FAILED?

Só é possível criar ou excluir um perfil do Fargate por vez. Se excluir um perfil do Fargate, nenhum outro poderá ser criado ou excluído ao mesmo tempo.

Se usar um provisionador baseado em API, a criação ou exclusão de um perfil do Fargate deve começar depois que todos os outros perfis do Fargate forem criados ou excluídos com sucesso.

Posso especificar os recursos (CPU, memória) a serem provisionados para os nós do Fargate dentro do perfil do Fargate?

Você não pode especificar diretamente a quantidade de recursos a serem provisionados no perfil do Fargate. É uma prática recomendada especificar solicitações de recursos no arquivo YAML de especificação do pod do Fargate. Isso ajuda o fluxo de trabalho do Fargate a atribuir pelo menos essa quantidade de recursos para o pod. Para obter informações sobre a especificação do pod, consulte Como o Kubernetes aplica solicitações e limites de recursos no site do Kubernetes.

A quantidade de vCPU ou memória que você vê depois de executar o comando kubectl describe node pode não ser a mesma solicitada para o pod. A quantidade de memória e CPU que o nó tem depende da capacidade disponível no pool de alocação de recursos do Fargate. Você é cobrado com base no valor solicitado de acordo com as especificações do seu pod. Você não é cobrado pela quantidade de recursos visíveis com o kubectl.

Observação: se uma combinação de vCPU e memória não for especificada, a menor combinação disponível será usada (0,25 vCPU e 0,5 GB de memória).

AWS OFICIALAtualizada há 3 anos