Introducción
Desde hoy, los equipos de DevOps que gestionan clusters en AWS pueden aprovechar Kubernetes 1.36 en Amazon EKS y EKS Distro. La versión, liberada el 27 de mayo de 2025, llega con cambios disruptivos en seguridad, escalabilidad y operabilidad, pero también exige planificación cuidadosa. Por ejemplo, la migración de clusters a 1.36 no es un kubectl patch simple: requiere validar compatibilidad con versiones anteriores de eksctl, actualizar herramientas como kube-proxy y, en algunos casos, ajustar políticas de red o admission controllers.
En producción, esto se traduce en ventanas de mantenimiento programadas y pruebas previas en entornos de staging. AWS no fuerza actualizaciones automáticas, pero recomienda actualizar antes del fin de vida útil de Kubernetes 1.35 (previsto para septiembre de 2025). ¿Qué pasa si no se actualiza? Clusters en 1.35 perderán soporte oficial de parches de seguridad críticos, como el CVE-2025-31478 (puntuación CVSS 7.5), que afecta a la API de Kubernetes y permite escalada de privilegios.
Qué ocurrió
AWS anunció oficialmente el soporte para Kubernetes 1.36 en Amazon EKS y EKS Distro el 15 de junio de 2025, según el canal de novedades de AWS. La implementación está disponible en todas las regiones donde EKS opera, incluyendo AWS GovCloud (US). Esto incluye clusters nuevos creados desde cero y la posibilidad de actualizar clusters existentes mediante:
- EKS Console (interfaz gráfica)
- eksctl CLI (versión ≥0.189)
- Herramientas de infraestructura como código (Terraform, Pulumi, etc.)
Kubernetes 1.36 introdujo 46 mejoras significativas, pero estas son las que impactan directamente en equipos de DevOps e infraestructura:
- User Namespaces en GA: Mapea el usuario raíz del contenedor (UID 0) a un usuario no privilegiado en el host. Esto mitiga escapes de contenedores que intenten escalar privilegios en el nodo. En pruebas internas de AWS, se redujo un 40% los incidentes de escape de contenedores en clusters con esta función activada.
- Mutating Admission Policies con CEL: Permite modificar recursos directamente en el API server sin necesidad de webhooks. Esto elimina el overhead de mantener admission controllers externos y reduce latencias en operaciones como
kubectl apply. Por ejemplo, un equipo de seguridad puede ahora rotar automáticamente secrets en pods sin reiniciarlos, algo imposible con webhooks tradicionales.
- Escalado vertical de pods sin reinicio: Los pods pueden ajustar su límite de CPU y memoria en tiempo real sin necesidad de recrearse. Esto es crítico para aplicaciones con cargas dinámicas, como servicios de backend en Node.js o Python. Anteriormente, escalar un pod requería un
kubectl delete pody esperar a que el Deployment lo recreara.
- Resource Health Status en Pods: El estado del pod ahora incluye información sobre la salud de los dispositivos (ej: GPU, NIC). Esto ayuda a identificar fallos de hardware que causen
CrashLoopBackOffsin tener que revisar logs dekubeletmanualmente.
Impacto para DevOps / Infraestructura / Cloud / Seguridad
Para equipos de DevOps e infraestructura
La actualización a Kubernetes 1.36 no es trivial. Según el EKS Version Lifecycle Policy, AWS soporta oficialmente solo las 3 últimas versiones estables de Kubernetes. Al lanzar 1.36, 1.33 pasó a «descontinuado» (end-of-life) el 1 de julio de 2025. Esto significa:
- Clusters en 1.33 ya no reciben parches de seguridad críticos (ej: CVE-2025-28475, CVSS 8.1).
- Nuevas funcionalidades de EKS (como EKS Pod Identities) solo están disponibles en versiones ≥1.34.
Además, la actualización requiere:
- Compatibilidad con
eksctl: Versiones anteriores a 0.189 no soportan clusters en 1.36. Verificá con:
eksctl version
Si usás una versión antigua, actualizá con:
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
- Actualización de
kube-proxyy CNI: Ambos componentes deben actualizarse a versiones compatibles con 1.36. Para Amazon VPC CNI (v1.18+):
kubectl set image daemonset aws-node -n kube-system amazon-k8s-cni=602401143452.dkr.ecr.us-east-1.amazonaws.com/amazon-k8s-cni:v1.18.0
- Pruebas previas: AWS recomienda validar en un cluster de staging con:
eksctl create cluster --version 1.36 --name staging-136 --region us-east-1
Usá herramientas como Sonobuoy para verificar conformidad:
sonobuoy run --mode=certified-conformance --kubernetes-version=1.36
Para equipos de seguridad
Kubernetes 1.36 introduce cambios que afectan políticas de seguridad:
- User Namespaces: Si tu cluster usa contenedores con privilegios (ej: pods con
securityContext.runAsUser: 0), deberás reconfigurarlos. Usá:
securityContext:
runAsUser: 1000
runAsGroup: 1000
En clusters con pods heredados, esto puede romper funcionalidades. AWS publicó un script de migración para automatizar ajustes.
- Mutating Admission Policies: Las políticas CEL reemplazan a admission webhooks en algunos casos. Si tu cluster usa webhooks para modificar recursos (ej: Istio, Vault), deberás migrarlos. Ejemplo de política CEL para agregar labels:
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
name: add-labels
webhooks:
- name: add-labels.example.com
rules:
- apiGroups: [""]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["pods"]
clientConfig:
service:
namespace: default
name: mutating-admission
path: /mutate
admissionReviewVersions: ["v1"]
sideEffects: None
timeoutSeconds: 5
Impacto en costos y rendimiento
- Escalado vertical de pods: Reduce costos en entornos con cargas dinámicas. Por ejemplo, un pod de Node.js que usa un 30% de CPU puede escalarse a 1.5 vCPU sin reinicio, evitando la recreación de pods y el gasto extra en nodos.
- Resource Health Status: Minimiza tiempos de diagnóstico. En clusters con GPU, AWS reportó una reducción del 25% en incidentes por fallos de hardware no detectados.
Detalles técnicos
Versiones afectadas y compatibilidad
| Componente | Versión mínima requerida | Notas |
|---|---|---|
