Perfis do Fargate para pods sem servidor
Execute pods do Kubernetes no Fargate sem gerenciar nós EC2, configure perfis do Fargate e entenda suas restrições de namespace.
Perfis do Fargate para pods sem servidor é uma aula grátis de AWS Solutions Architect no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AWS Solutions Architect, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AWS Solutions Architect inclui 4 aulas no total.
O que são perfis do Fargate?
AWS Fargate para EKS permite executar pods do Kubernetes sem provisionar ou gerenciar nós do EC2. Em vez de pensar em tipos de instância e grupos de nós, você define um perfil do Fargate que informa ao EKS quais pods devem ser executados no Fargate, com base no namespace e em seletores de rótulos opcionais. A AWS provisiona automaticamente a quantidade adequada de capacidade computacional para cada pod e a encerra quando o pod é interrompido.
Configuração do perfil do Fargate
Um perfil do Fargate é associado a um cluster do EKS e contém um ou mais seletores — cada seletor especifica um namespace e pares opcionais de chave e valor de rótulos do Kubernetes. Um pod precisa corresponder a pelo menos um seletor para ser agendado no Fargate. O perfil também especifica a função de execução do pod (uma função do IAM) e as sub-redes privadas que o Fargate deve usar para iniciar os pods.
# Create a Fargate profile for the 'production' namespace
aws eks create-fargate-profile \
--cluster-name my-cluster \
--fargate-profile-name production-profile \
--pod-execution-role-arn arn:aws:iam::111122223333:role/EKSFargatePodExecutionRole \
--subnets subnet-aaa subnet-bbb \
--selectors '[{"namespace":"production"},{"namespace":"staging","labels":{"fargate":"true"}}]'Função de execução do pod
A função de execução do pod é uma função do IAM que o EKS assume quando o Fargate obtém imagens de contêiner e envia logs de pods para o CloudWatch. Ela precisa incluir a política gerenciada pela AWS AmazonEKSFargatePodExecutionRolePolicy. Sem essa função, os pods agendados no Fargate não conseguirão iniciar, pois o Fargate não poderá se autenticar no ECR nem gravar no CloudWatch Logs.
# Create the pod execution role trust policy
cat fargate-trust-policy.json
# {
# "Version": "2012-10-17",
# "Statement": [{
# "Effect": "Allow",
# "Principal": {"Service": "eks-fargate-pods.amazonaws.com"},
# "Action": "sts:AssumeRole"
# }]
# }
aws iam attach-role-policy \
--role-name EKSFargatePodExecutionRole \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicyRestrições de namespace no Fargate
O Fargate impõe restrições importantes de namespace. O namespace kube-system não pode ser usado pela maioria dos perfis do Fargate, pois pods do sistema, como o kube-proxy, são executados nele. Uma exceção é o CoreDNS: a AWS fornece um processo guiado para aplicar um patch à implantação do CoreDNS e remover a anotação eks.amazonaws.com/compute-type: ec2, permitindo sua execução no Fargate. Os pods em namespaces excluídos continuarão sem agendamento se nenhum nó do EC2 estiver disponível.
# Patch CoreDNS to allow Fargate scheduling
kubectl patch deployment coredns \
-n kube-system \
--type json \
-p '[{"op":"remove","path":"/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
# Restart CoreDNS to apply the patch
kubectl rollout restart deployment coredns -n kube-systemDimensionamento de recursos dos pods do Fargate
O Fargate aloca recursos computacionais com base nas solicitações de CPU e memória definidas na especificação do pod. Ele arredonda os valores para a combinação de vCPU/memória compatível mais próxima do Fargate (por exemplo, de 0,25 vCPU / 0,5 GB até 16 vCPU / 120 GB). Você paga apenas pelos recursos alocados por segundo enquanto o pod está em execução. Sempre defina solicitações de recursos precisas — solicitar menos do que o necessário causa encerramentos por falta de memória; solicitar mais aumenta o custo.
# Pod spec with explicit resource requests and limits
apiVersion: v1
kind: Pod
metadata:
name: api-pod
namespace: production
spec:
containers:
- name: api
image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/my-api:latest
resources:
requests:
cpu: '500m'
memory: '1Gi'
limits:
cpu: '1'
memory: '2Gi'Grupos de nós do Fargate e do EC2: compensações
O Fargate elimina o gerenciamento de nós, mas tem algumas limitações: não oferece DaemonSets (pois não há nós persistentes nos quais agendá-los), não permite contêineres privilegiados e oferece suporte limitado a determinados tipos de armazenamento. Os grupos de nós do EC2 oferecem suporte a GPUs, kernels personalizados e cargas de trabalho com estado que usam unidades NVMe locais. Um padrão comum é executar serviços sem estado no Fargate e cargas de trabalho com estado ou que usam GPU em grupos de nós dedicados do EC2 dentro do mesmo cluster do EKS.
Rede do Fargate e grupos de segurança
Cada pod do Fargate recebe sua própria interface de rede elástica (ENI) e um IP privado da sub-rede especificada no perfil. Isso permite aplicar um grupo de segurança exclusivo a cada pod usando o recurso Security Groups for Pods. Os pods do Fargate oferecem suporte a todas as regras padrão de grupos de segurança da VPC, proporcionando um controle detalhado do tráfego de entrada e saída no nível de cada pod — uma importante vantagem de segurança em relação aos grupos de segurança compartilhados no nível do nó.
# Assign a security group to a pod via annotation
apiVersion: v1
kind: Pod
metadata:
name: secure-api
namespace: production
annotations:
vpc.amazonaws.com/pod-eni: 'true'
spec:
securityGroups:
groupIds:
- sg-0abc1234def56789a
containers:
- name: api
image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/secure-api:v2Envio de logs do Fargate para o CloudWatch
Os pods do Fargate enviam logs para o Amazon CloudWatch Logs usando o roteador de logs integrado Fluent Bit. Você configura o logging criando um ConfigMap chamado aws-logging no namespace aws-observability. A função de execução do pod precisa ter permissão para criar grupos de logs e gravar eventos de log. Os logs são organizados em grupos de logs do CloudWatch por cluster e namespace, facilitando a agregação centralizada de logs sem executar um agente de logs separado.
# ConfigMap to enable Fargate logging
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-logging
namespace: aws-observability
data:
flb_log_cw: 'true'
output.conf: |
[OUTPUT]
Name cloudwatch_logs
Match *
region us-east-1
log_group_name /aws/eks/my-cluster/fargate
log_stream_prefix fargate-
auto_create_group trueHorizontal Pod Autoscaler no Fargate
O Fargate oferece suporte ao Horizontal Pod Autoscaler (HPA) do Kubernetes. Quando o HPA aumenta o número de réplicas, o Fargate provisiona automaticamente novas microVMs, sem que você precise ajustar o tamanho de nenhum grupo de nós. Isso proporciona uma experiência verdadeiramente sem servidor de escalabilidade automática: o HPA controla a quantidade de pods, e o Fargate gerencia a capacidade computacional de forma elástica. Você ainda precisa ter o Metrics Server implantado no cluster para que o HPA leia o uso de CPU e memória.
# Deploy Metrics Server (required for HPA)
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
# Create an HPA for a Fargate-scheduled deployment
kubectl autoscale deployment my-api \
--namespace production \
--cpu-percent=60 \
--min=2 \
--max=20Modelo de preços do Fargate
Você paga pelo consumo de vCPU-segundo e GB-segundo no Fargate, com um mínimo de 1 minuto por pod. Não há custos no nível do nó, cobranças por capacidade reservada nem custos de aplicação de patches na AMI ou no OS. Normalmente, o Fargate é mais caro por unidade de capacidade computacional do que instâncias sob demanda do EC2 dimensionadas corretamente, mas o custo total de propriedade costuma ser menor quando se considera o tempo de engenharia economizado no gerenciamento de nós, na aplicação de patches e nas decisões de escalabilidade.
Limitações comuns do Fargate que você deve conhecer
Principais limitações do Fargate para a prova SAA-C03: não oferece suporte a DaemonSet (os pods não podem ser colocados em cada nó porque não há nós persistentes), não permite contêineres privilegiados, não oferece o modo hostNetwork, e o armazenamento efêmero é limitado a 20 GB por pod (podendo ser expandido para 200 GB com uma configuração). O armazenamento persistente em bloco com EBS não é compatível — use EFS para armazenamento persistente compartilhado de arquivos com pods do Fargate.
# Mount EFS in a Fargate pod (EBS is NOT supported on Fargate)
apiVersion: v1
kind: Pod
metadata:
name: efs-pod
namespace: production
spec:
volumes:
- name: efs-storage
persistentVolumeClaim:
claimName: efs-pvc
containers:
- name: app
image: my-image:latest
volumeMounts:
- name: efs-storage
mountPath: /dataVerificação rápida
Teste sua compreensão dos conceitos do AWS Solutions Architect (SAA-C03) desta lição.
Recapitulação da lição
Nesta lição, você aprendeu que: os perfis do Fargate usam seletores de namespace e rótulos para agendar pods sem servidor; a função de execução do pod concede ao Fargate permissão para obter imagens e gravar logs; e o Fargate não oferece suporte a DaemonSets nem a EBS — use EFS para armazenamento persistente. A seguir, exploraremos a rede do EKS com o plug-in VPC CNI e o AWS Load Balancer Controller.
Perguntas Frequentes
A aula “Perfis do Fargate para pods sem servidor” é grátis?
Sim — o texto completo de “Perfis do Fargate para pods sem servidor” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AWS Solutions Architect, atualize para CoddyKit PRO. O curso de AWS Solutions Architect inclui 4 aulas no total.
O que vou aprender em “Perfis do Fargate para pods sem servidor”?
Execute pods do Kubernetes no Fargate sem gerenciar nós EC2, configure perfis do Fargate e entenda suas restrições de namespace. Você pratica AWS Solutions Architect com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AWS Solutions Architect?
Nenhuma experiência prévia é necessária. AWS Solutions Architect no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Perfis do Fargate para pods sem servidor”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AWS Solutions Architect?
Sim. Cada aula de AWS Solutions Architect inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Plano de controle e nós de trabalho do EKS
- Perfis do Fargate para pods sem servidor
- Rede do EKS: VPC CNI e balanceamento de carga
- Funções do IAM para contas de serviço (IRSA)