July 31, 2025

EKS

📘 ¿Qué es Amazon EKS?

Amazon EKS es el servicio gestionado de Kubernetes de AWS que te permite ejecutar clústeres Kubernetes altamente disponibles y seguros sin necesidad de instalar ni operar el plano de control (control plane).

🔹 Kubernetes es un orquestador de contenedores de código abierto usado para:

  • Desplegar

  • Escalar

  • Monitorizar

  • Recuperar contenedores

Con EKS, AWS se encarga del plano de control, mientras tú gestionas los nodos y cargas de trabajo.


🎯 Casos de uso

  • Microservicios complejos

  • Workloads portables entre nubes o on-premise

  • Big data y procesamiento de eventos

  • CI/CD pipelines en Kubernetes

  • ML/AI pipelines en contenedores


🧩 Componentes de EKS

ComponenteDescripción
Control PlaneGestionado por AWS: etcd, API Server, Scheduler, Controller Manager
Nodo WorkerEC2 (autoscaling group) o Fargate donde se ejecutan los pods
PodUnidad mínima de ejecución en K8s
EKS ClusterEntorno aislado para ejecutar recursos Kubernetes
Node GroupGrupo de nodos EC2 gestionados (autoscaling, AMI optimizada, updates)
Fargate ProfileOpcional. Corre pods sin usar EC2, serverless

🚀 Modos de ejecución en EKS

ModoDescripción
EC2Tú gestionas el grupo de nodos (node groups)
FargateAWS corre los pods sin que gestiones instancias
EKS AnywhereEKS en tu datacenter, VMs o bare metal

🛠️ Proceso de implementación

  1. Crear un clúster EKS (via consola, CLI, CDK, Terraform, etc.)

  2. Crear y unir nodos (EC2 node groups o perfiles Fargate)

  3. Configurar kubectl (aws eks update-kubeconfig)

  4. Desplegar workloads (kubectl apply -f deployment.yaml)

  5. Monitorear y escalar


🗃️ EKS vs ECS vs Fargate

CaracterísticaEKS (Kubernetes)ECSFargate (ECS/EKS)
TipoKubernetesPropietario de AWSServerless (para ambos)
Curva de aprendizajeAltaBajaMuy baja
EscaladoHorizontal / HPAIntegrado en ServiceAutomático
PortabilidadAlta (multi-cloud)LimitadaAlta
PersonalizaciónMuy altaMediaLimitada

🧾 YAML de ejemplo

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mi-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: mi-app
  template:
    metadata:
      labels:
        app: mi-app
    spec:
      containers:
        - name: app
          image: mi-imagen:latest
          ports:
            - containerPort: 80
kubectl apply -f deployment.yaml
kubectl get pods

🔐 Seguridad en EKS

ÁreaSolución AWS
Acceso IAMIAM para controlar acceso al clúster (AuthConfigMap)
Roles por podIAM Roles for Service Accounts (IRSA)
RedesVPC, SGs, NACLs por pod (usando CNI plugin)
RBAC KubernetesControla acciones por usuario en K8s
Cifrado de secretosKMS

📈 Monitoreo y logging

HerramientaUso
CloudWatch LogsLogs de pods y eventos (requiere configuración)
CloudWatch Container InsightsMétricas a nivel contenedor, nodo, pod
Prometheus + GrafanaStack de monitoreo personalizada en EKS
AWS X-RayTrazabilidad distribuida

⚙️ Escalado en EKS

  • Horizontal Pod Autoscaler (HPA): basado en CPU, RAM u otras métricas

  • Cluster Autoscaler: escala nodos (EC2) dinámicamente

  • Fargate: escala pods automáticamente sin intervención


🔁 CI/CD con EKS

  • Usa CodePipeline + CodeBuild

  • O herramientas como:

    • ArgoCD / Flux

    • Jenkins, GitHub Actions

    • Helm charts para plantillas de despliegue

    • Skaffold para desarrollo local


🧰 Herramientas comunes

HerramientaDescripción
kubectlCLI para interactuar con el clúster
eksctlCLI para crear clústeres rápido (por Weaveworks)
helmGestor de paquetes para Kubernetes
k9sInterfaz TUI para explorar el clúster
CDK / TerraformInfraestructura como código para clúster y recursos

🎓 Preguntas tipo certificación

  1. ¿Cuál es la ventaja principal de usar EKS frente a instalar K8s en EC2 manualmente?

    • ✅ AWS gestiona automáticamente el plano de control y las actualizaciones.
  2. ¿Puedes correr pods en EKS sin tener EC2?

    • ✅ Sí, usando Fargate.
  3. ¿Cómo controlas el acceso a recursos AWS desde un pod?

    • ✅ Mediante IAM Roles for Service Accounts (IRSA).
  4. ¿Qué herramienta permite crear un clúster EKS con un solo comando?

    • eksctl
  5. ¿Qué servicio usas para logs centralizados de pods?

    • ✅ CloudWatch Logs (via Fluent Bit/CloudWatch agent)

📚 Recursos útiles


🎯 Buenas prácticas

  • Usa EKS Fargate para workloads pequeños o impredecibles

  • Implementa RBAC + IAM correctamente

  • Separa namespaces por entorno o equipo

  • Usa autoscaling en nodos y pods

  • Habilita IRSA para seguridad granular

  • Usa ALB Ingress Controller o Gateway API para exponer servicios