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
| Componente | Descripción |
|---|---|
| Control Plane | Gestionado por AWS: etcd, API Server, Scheduler, Controller Manager |
| Nodo Worker | EC2 (autoscaling group) o Fargate donde se ejecutan los pods |
| Pod | Unidad mínima de ejecución en K8s |
| EKS Cluster | Entorno aislado para ejecutar recursos Kubernetes |
| Node Group | Grupo de nodos EC2 gestionados (autoscaling, AMI optimizada, updates) |
| Fargate Profile | Opcional. Corre pods sin usar EC2, serverless |
🚀 Modos de ejecución en EKS
| Modo | Descripción |
|---|---|
| EC2 | Tú gestionas el grupo de nodos (node groups) |
| Fargate | AWS corre los pods sin que gestiones instancias |
| EKS Anywhere | EKS en tu datacenter, VMs o bare metal |
🛠️ Proceso de implementación
-
Crear un clúster EKS (via consola, CLI, CDK, Terraform, etc.)
-
Crear y unir nodos (EC2 node groups o perfiles Fargate)
-
Configurar kubectl (
aws eks update-kubeconfig) -
Desplegar workloads (
kubectl apply -f deployment.yaml) -
Monitorear y escalar
🗃️ EKS vs ECS vs Fargate
| Característica | EKS (Kubernetes) | ECS | Fargate (ECS/EKS) |
|---|---|---|---|
| Tipo | Kubernetes | Propietario de AWS | Serverless (para ambos) |
| Curva de aprendizaje | Alta | Baja | Muy baja |
| Escalado | Horizontal / HPA | Integrado en Service | Automático |
| Portabilidad | Alta (multi-cloud) | Limitada | Alta |
| Personalización | Muy alta | Media | Limitada |
🧾 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
| Área | Solución AWS |
|---|---|
| Acceso IAM | IAM para controlar acceso al clúster (AuthConfigMap) |
| Roles por pod | IAM Roles for Service Accounts (IRSA) |
| Redes | VPC, SGs, NACLs por pod (usando CNI plugin) |
| RBAC Kubernetes | Controla acciones por usuario en K8s |
| Cifrado de secretos | KMS |
📈 Monitoreo y logging
| Herramienta | Uso |
|---|---|
| CloudWatch Logs | Logs de pods y eventos (requiere configuración) |
| CloudWatch Container Insights | Métricas a nivel contenedor, nodo, pod |
| Prometheus + Grafana | Stack de monitoreo personalizada en EKS |
| AWS X-Ray | Trazabilidad 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
| Herramienta | Descripción |
|---|---|
kubectl | CLI para interactuar con el clúster |
eksctl | CLI para crear clústeres rápido (por Weaveworks) |
helm | Gestor de paquetes para Kubernetes |
k9s | Interfaz TUI para explorar el clúster |
| CDK / Terraform | Infraestructura como código para clúster y recursos |
🎓 Preguntas tipo certificación
-
¿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.
-
¿Puedes correr pods en EKS sin tener EC2?
- ✅ Sí, usando Fargate.
-
¿Cómo controlas el acceso a recursos AWS desde un pod?
- ✅ Mediante IAM Roles for Service Accounts (IRSA).
-
¿Qué herramienta permite crear un clúster EKS con un solo comando?
- ✅
eksctl
- ✅
-
¿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