0Pricing
AWS Solutions Architect · Lección

Perfiles de Fargate para pods sin servidor

Ejecute pods de Kubernetes en Fargate sin gestionar nodos EC2, configure perfiles de Fargate y comprenda sus restricciones de espacios de nombres

Perfiles de Fargate para pods sin servidor es una lección gratuita de AWS Solutions Architect en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AWS Solutions Architect, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AWS Solutions Architect incluye 4 lecciones en total.

¿Qué son los perfiles de Fargate?

AWS Fargate para EKS le permite ejecutar pods de Kubernetes sin aprovisionar ni gestionar nodos EC2. En lugar de pensar en tipos de instancia y grupos de nodos, define un perfil de Fargate que indica a EKS qué pods deben ejecutarse en Fargate según su espacio de nombres y, opcionalmente, selectores de etiquetas. AWS aprovisiona automáticamente la cantidad adecuada de capacidad de cómputo para cada pod y la termina cuando el pod se detiene.

Configuración de perfiles de Fargate

Un perfil de Fargate está asociado a un clúster de EKS y contiene uno o más selectores; cada selector especifica un espacio de nombres y, opcionalmente, pares clave-valor de etiquetas de Kubernetes. Un pod debe coincidir con al menos un selector para programarse en Fargate. El perfil también especifica el rol de ejecución del pod (un rol de IAM) y las subredes privadas que Fargate debe utilizar para lanzar los 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"}}]'

Rol de ejecución del pod

El rol de ejecución del pod es un rol de IAM que EKS asume cuando Fargate extrae imágenes de contenedor y envía los registros de los pods a CloudWatch. Debe incluir la política gestionada por AWS AmazonEKSFargatePodExecutionRolePolicy. Sin este rol, los pods programados en Fargate no podrán iniciarse porque Fargate no puede autenticarse en ECR ni escribir en 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/AmazonEKSFargatePodExecutionRolePolicy

Restricciones de espacios de nombres en Fargate

Fargate impone importantes restricciones de espacios de nombres. El espacio de nombres kube-system no está disponible para la mayoría de los perfiles de Fargate porque allí se ejecutan pods del sistema, como kube-proxy. CoreDNS es una excepción: AWS proporciona un proceso guiado para aplicar un parche al despliegue de CoreDNS y eliminar la anotación eks.amazonaws.com/compute-type: ec2, de modo que pueda ejecutarse en Fargate. Los pods de los espacios de nombres excluidos permanecerán sin programarse si no hay nodos EC2 disponibles.

# 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-system

Asignación de recursos de los pods de Fargate

Fargate asigna recursos de cómputo según las solicitudes de CPU y memoria definidas en la especificación del pod. Redondea al alza hasta la combinación de vCPU y memoria compatible con Fargate más cercana (por ejemplo, de 0,25 vCPU / 0,5 GB hasta 16 vCPU / 120 GB). Solo se le factura por los recursos asignados por segundo mientras se ejecuta el pod. Establezca siempre solicitudes de recursos precisas: solicitar menos recursos de los necesarios provoca terminaciones por falta de memoria, mientras que solicitar más aumenta el coste.

# 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'

Fargate frente a grupos de nodos EC2: ventajas y desventajas

Fargate elimina la gestión de nodos, pero tiene ciertas limitaciones: no admite daemonsets (ya que no hay nodos persistentes en los que programarlos), no admite contenedores privilegiados y ofrece compatibilidad limitada con determinados tipos de almacenamiento. Los grupos de nodos EC2 admiten GPU, kernels personalizados y cargas de trabajo con estado que utilizan unidades NVMe locales. Un patrón habitual consiste en ejecutar servicios sin estado en Fargate y cargas de trabajo con estado o que usan GPU en grupos de nodos EC2 dedicados dentro del mismo clúster de EKS.

Redes y grupos de seguridad de Fargate

Cada pod de Fargate obtiene su propia interfaz de red elástica (ENI) y una IP privada de la subred especificada en el perfil. Esto significa que puede aplicar un grupo de seguridad único a cada pod mediante la función Security Groups for Pods. Los pods de Fargate admiten todas las reglas estándar de grupos de seguridad de VPC, lo que proporciona un control detallado del tráfico entrante y saliente a nivel de cada pod, una importante ventaja de seguridad frente a los grupos de seguridad compartidos a nivel de nodo.

# 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:v2

Registros de Fargate en CloudWatch

Los pods de Fargate envían registros a Amazon CloudWatch Logs mediante el enrutador de registros Fluent Bit integrado. Para configurar el registro, cree un ConfigMap llamado aws-logging en el espacio de nombres aws-observability. El rol de ejecución del pod debe tener permiso para crear grupos de registros y escribir eventos de registro. Los registros se organizan en grupos de registros de CloudWatch por clúster y espacio de nombres, lo que facilita la agregación centralizada de registros sin ejecutar un agente de registros independiente.

# 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 true

Horizontal Pod Autoscaler en Fargate

Fargate admite el Horizontal Pod Autoscaler (HPA) de Kubernetes. Cuando HPA aumenta el número de réplicas, Fargate aprovisiona automáticamente nuevas microVM sin que tenga que ajustar el tamaño de ningún grupo de nodos. Esto proporciona una experiencia de escalado automático realmente sin servidor: HPA controla el número de pods y Fargate gestiona la capacidad de cómputo de forma elástica. Aun así, necesita tener Metrics Server desplegado en el clúster para que HPA pueda leer el uso de CPU y memoria.

# 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=20

Modelo de precios de Fargate

Fargate se factura por los vCPU-segundo y GB-segundo consumidos, con un mínimo de 1 minuto por pod. No hay costes a nivel de nodo, cargos por capacidad reservada ni costes de aplicación de parches a la AMI o al sistema operativo. Normalmente, Fargate es más caro por unidad de cómputo que las instancias EC2 bajo demanda dimensionadas correctamente, pero el coste total de propiedad suele ser menor cuando se tiene en cuenta el tiempo de ingeniería ahorrado en la gestión de nodos, la aplicación de parches y las decisiones de escalado.

Principales limitaciones de Fargate que debe conocer

Limitaciones importantes de Fargate para el examen SAA-C03: no admite DaemonSet (los pods no se pueden colocar en cada nodo porque no hay nodos persistentes), no admite contenedores privilegiados, no admite el modo hostNetwork y el almacenamiento efímero está limitado a 20 GB por pod (ampliable a 200 GB mediante una configuración). No se admite el almacenamiento persistente en bloques con EBS; use EFS para el almacenamiento persistente de archivos compartidos con pods de 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: /data

Comprobación rápida

Compruebe su comprensión de los conceptos de AWS Solutions Architect (SAA-C03) tratados en esta lección.

Resumen de la lección

En esta lección ha aprendido lo siguiente: los perfiles de Fargate utilizan selectores de espacios de nombres y etiquetas para programar pods sin servidor, el rol de ejecución del pod concede a Fargate permiso para extraer imágenes y escribir registros, y Fargate no admite DaemonSets ni EBS; use EFS para el almacenamiento persistente. A continuación, exploraremos las redes de EKS con el plugin VPC CNI y AWS Load Balancer Controller.

Preguntas frecuentes

¿La lección «Perfiles de Fargate para pods sin servidor» es gratis?

Sí — el texto completo de «Perfiles de Fargate para pods sin servidor» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AWS Solutions Architect, actualiza a CoddyKit PRO. El curso de AWS Solutions Architect incluye 4 lecciones en total.

¿Qué aprenderé en «Perfiles de Fargate para pods sin servidor»?

Ejecute pods de Kubernetes en Fargate sin gestionar nodos EC2, configure perfiles de Fargate y comprenda sus restricciones de espacios de nombres Practicas AWS Solutions Architect con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar AWS Solutions Architect?

No se requiere experiencia previa. AWS Solutions Architect en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Perfiles de Fargate para pods sin servidor»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de AWS Solutions Architect?

Sí. Cada lección de AWS Solutions Architect incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Plano de control y nodos de trabajo de EKS
  2. Perfiles de Fargate para pods sin servidor
  3. Redes de EKS: VPC CNI y balanceo de carga
  4. Roles de IAM para cuentas de servicio (IRSA)
← Volver a AWS Solutions Architect