Kubernetes v1.31.0 ya está aquí: ¿Qué hay de nuevo y por qué debería importarme?
Kubernetes v1.31 es más que solo una colección de nuevas características y mejoras; es un testimonio del compromiso del proyecto con la evolución constante, la mejora de la experiencia del usuario y la seguridad mejorada. Tanto si eres un veterano experimentado en Kubernetes como si acabas de empezar tu viaje, la versión v1.31 tiene algo que ofrecer a todo el mundo. Entonces, ¿a qué esperas? Sumérgete, explora y experimenta la potencia y flexibilidad de Kubernetes v1.31.
Vale, suficiente bla, bla. Ve directo al grano.
Cada lanzamiento de Kubernetes tiene sus estrellas, y la versión v1.31 no es una excepción. Vamos a centrarnos en algunos elementos que cambian las reglas del juego:
¿Proveedores de nube In-Tree? ¡Fuera de aquí!
Este es el equivalente tecnológico de que esa banda a la que has estado siguiendo desde sus días en el garaje finalmente haya alcanzado el éxito. ¡Kubernetes se está volviendo agnóstico a la nube! La versión v1.31 se despide de todas las integraciones In-Tree con proveedores de nube. Este proceso de externalización es un gran paso hacia un Kubernetes verdaderamente neutral para los proveedores, liberándolo de las ataduras de entornos de nube específicos.
Política de reclamación de PersistentVolume: ¡Ahora con garras y dientes!
¿Recuerdas cuando establecías una política de reclamación de PersistentVolume (PersistentVolume Reclaim Policy) y se sentía más como una sugerencia que como una regla? Esos días se acabaron. La versión v1.31 introduce finalizadores de protección contra eliminación para garantizar que tu política se aplique realmente. Por fin, puedes confiar en que tus valiosos datos se gestionarán de acuerdo con tus deseos.
Kubectl Debug
La depuración de imágenes base sin shell ahora es mucho más sencilla. La versión v1.31 introduce una opción de perfil personalizado para el comando kubectl debug
, lo que te permite montar volúmenes de datos y otros recursos directamente en tu contenedor de depuración. Es como tener un pase entre bastidores para solucionar problemas de tus aplicaciones con facilidad.
Apps (Deployments, StatefulSets, etc)
Kubernetes no se trata solo de infraestructura; se trata de potenciar tus aplicaciones. Así es como la versión v1.31 sube de nivel tu juego de aplicaciones:
PodDisruptionBudgets
Despídete de esos momentos incómodos en los que los Pods no saludables acaparan recursos y estropean tu escalado. La versión v1.31 presenta PodHealthyPolicy
para PodDisruptionBudgets (PDB), lo que te permite especificar si solo se deben tener en cuenta los Pods saludables al aplicar los límites de interrupción. Interesante....
StatefulSets: Maestros de su propio dominio (y numeración ordinal)
La migración de StatefulSets ahora es mucho menos estresante. La versión v1.31 permite a los StatefulSets controlar su propia numeración ordinal de réplicas de inicio, allanando el camino para migraciones sin problemas entre namespaces y clusters sin el drama del tiempo de inactividad o las reprogramaciones manuales. (Hola mySQL)
Política de éxito/ finalizaciones
¿Quién dice que Kubernetes debe dictar cómo es el éxito para tus trabajos? La versión v1.31 te pone al mando con la capacidad de definir políticas de éxito y finalización personalizadas para tus workloads. Esto es particularmente útil para cargas de trabajo por lotes donde el éxito podría no significar que todas las actividades se completen.
kubectl y cli
La CLI de Kubernetes es tu fiel compañero para administrar clústeres. La versión v1.31 le ofrece algunas actualizaciones ingeniosas:
WebSockets para kubectl
Kubernetes está adoptando el futuro de la comunicación web al cambiar de SPDY a WebSockets. La versión v1.31 introduce un WebSocketExecutor para kubectl
, lo que permite una comunicación más rápida y eficiente con el servidor de API de Kubernetes. Es como actualizar tu conexión de acceso telefónico a fibra óptica.
Kustomize: separado de kubectl (eventualmente)
Aunque se aplazó por ahora, el plan para desacoplar kustomize
de kubectl
todavía está en el horizonte. Esta separación permite que cada herramienta evolucione a su propio ritmo, evitando desajustes de versión y simplificando la base de código de kubectl
. Es como esa ruptura amistosa en la que todos están de acuerdo en que es lo mejor.
Preferencias de Kubectl: La ansiedad por separación ya no existe
Mezclar las preferencias del usuario con las configuraciones del clúster es cosa del pasado. La versión v1.31 introduce el archivo kuberc
, un espacio dedicado para almacenar tus preferencias de kubectl
. Ahora puedes mantener tus configuraciones personales separadas de las configuraciones específicas del clúster, evitando sobrescrituras accidentales y simplificando la administración de preferencias.
Instrumentación de Kubernetes v1.31: Vigilando más de cerca las cosas
La supervisión y las métricas son cruciales para mantener tu clúster funcionando sin problemas. La versión v1.31 trae algunas mejoras notables en esta área:
Cardinalidad de métricas: Domesticando esas métricas descontroladas
La cardinalidad de métricas no controlada puede convertirse rápidamente en una pesadilla de recursos. La versión v1.31 introduce la aplicación de la cardinalidad de métricas, lo que brinda a los administradores de clústeres el poder de definir límites y evitar que las métricas descontroladas consuman todos tus recursos. Es como ponerle un regulador a un demonio de la velocidad, asegurando que todo funcione dentro de límites seguros.
Redes en Kubernetes 1.31: Conexiones más fluidas, más control
Las redes son la columna vertebral de cualquier clúster de Kubernetes, y la versión v1.31 trae algunas mejoras significativas:
Con conectividad Ingress: Kube-Proxy obtiene un aumento de confiabilidad
La versión v1.31 introduce el drenaje de conexiones para los nodos de terminación y mejora las comprobaciones de estado para Kube-proxy, lo que lleva a una conectividad Ingress más confiable para tus aplicaciones. Es como tener un policía de tránsito dirigiendo el tráfico sin problemas, incluso durante las horas pico.
Distribución del tráfico: Ajuste fino de su enrutamiento
La versión v1.31 te brinda más control sobre cómo fluye el tráfico a través de tu clúster con la adición del campo trafficDistribution
en la especificación del servicio. Esto te permite especificar preferencias para enrutar el tráfico, como preferir puntos finales topológicamente más cercanos. Es como tener un GPS para el tráfico de tu clúster, guiándolo por las rutas más eficientes.
Múltiples CIDR de servicio: Abundancia de direcciones IP
Quedarse sin IP de servicio es cosa del pasado. La versión v1.31 introduce los objetos ServiceCIDR
e IPAddress
, lo que te permite expandir dinámicamente tu espacio de direcciones IP de servicio disponible. Es como agregar carriles a una carretera, acomodando más tráfico sin esfuerzo.
Nodos de Kubernetes v1.31: Soporte SWAP, Cgroups y AppArmor, Uf!
En el corazón de cada clúster de Kubernetes están los worker nodes. La versión v1.31 introduce algunos cambios fundamentales en el funcionamiento de los nodos:
Soporte de intercambio de memoria (SWAP)
La memoria de intercambio finalmente obtiene el reconocimiento que merece en Kubernetes. La versión v1.31 introduce soporte swap a nivel de nodo, lo que te brinda la flexibilidad de utilizar el espacio de intercambio y potencialmente mejorar el rendimiento de tus cargas de trabajo.
Cgroup v1: Se jubila
Cgroup v1 nos ha servido bien, pero es hora de pasar la antorcha. La versión v1.31 hace la transición del soporte de cgroup v1 al modo de mantenimiento, allanando el camino para la adopción del cgroup v2 más potente y eficiente.
Soporte para AppArmor
Finalmente k8s da soporte nativo para AppArmor, lo que te permite definir perfiles de seguridad detallados para tus contenedores y Pods. Esto agrega una capa adicional de protección a tus apps, limitando sus capacidades y mitigando el impacto de posibles violaciones de seguridad.
apiVersion: v1
kind: Pod
metadata:
name: hello-apparmor
spec:
securityContext:
appArmorProfile:
type: Localhost
localhostProfile: k8s-apparmor-example-deny-write
containers:
- name: hello
image: busybox:1.28
command: [ "sh", "-c", "echo 'Hello AppArmor!' && sleep 1h" ]
Scheduling: la afinidad se refina
La capacidad de "agendar" o "programar" (scheduling) es crucial para optimizar la utilización de recursos. La versión v1.31 trae algunas mejoras para PodAffinity:
PodAffinity y PodAntiAffinity se vuelven más selectivos
Despídete de los días de las reglas torpes de afinidad . La versión v1.31 introduce MatchLabelKeys
y MismatchLabelKeys
para PodAffinityTerm
, lo que te brinda un control más granular sobre cómo los Pods se ubican conjuntamente o se distribuyen en tu clúster.
Almacenamiento en Kubernetes: timestamps en PersistentVolume, VolumeAttributesClass y más
El almacenamiento es un aspecto crítico de cualquier implementación de Kubernetes, y la versión v1.31 introduce algunas mejoras notables:
Timestamps en PersistentVolume
La administración de PersistentVolumes ahora es más fácil. La versión v1.31 agrega un nuevo campo de marca de tiempo a los PersistentVolumes, que registra cuándo hacen la transición entre diferentes fases. Esto te ayuda a comprender el ciclo de vida de tus volúmenes, simplifica las tareas de limpieza y obtiene información sobre tus patrones de uso del almacenamiento. Es como tener un libro de registro para tus volúmenes, rastreando sus viajes a través de los mares de Kubernetes.
VolumeAttributesClass: Desacoplar atributos de la capacidad
Atrás quedaron los días de administrar los atributos de almacenamiento y la capacidad como una entidad monolítica. La versión v1.31 introduce el recurso VolumeAttributesClass
, lo que te permite definir y administrar atributos de volumen como IOPS y rendimiento independientemente de la capacidad. Este control detallado simplifica la administración del almacenamiento y facilita la adaptación de los recursos de almacenamiento a las necesidades específicas de tus cargas de trabajo. Es como tener una caja de herramientas llena de diferentes opciones de almacenamiento, lo que te permite elegir la que mejor se adapte a cada trabajo.
CSI Differential Snapshot : Optimización y eficiencia incremental
Las instantáneas (snapshots) son esenciales para la protección de datos, pero pueden consumir muchos recursos. Si bien se aplazó por ahora, la característica planificada de instantánea diferencial CSI tiene como objetivo optimizar este proceso al permitir la recuperación de metadatos solo para los bloques modificados entre instantáneas. Esto puede reducir significativamente el tiempo y los recursos necesarios para las operaciones de instantáneas. Es como tomar una instantánea solo de los cambios en un documento en lugar de todo el documento cada vez, ahorrando tiempo y espacio.
Otras mejoras notables en Kubernetes 1.31
Kubernetes v1.31 está repleto de muchas otras mejoras y refinamientos. Aquí hay algunos puntos destacados:
Mejoras en el token de cuenta de servicio Más seguridad y trazabilidad
La versión v1.31 refuerza la seguridad al incrustar información del nodo en tokens de cuenta de servicio vinculados (bound service account tokens), lo que dificulta su uso indebido. Además, introduce UUID para tokens, mejorando la trazabilidad de las solicitudes del servidor API. Es como agregar sellos a prueba de manipulaciones y números de seguimiento a tus tokens, mejorando la seguridad y la responsabilidad.
Políticas de admisión "mutantes"
La versión v1.31 da un paso más hacia la simplificación del control de admisión con la introducción de políticas de admisión mutantes (mutating) utilizando CEL (lenguaje de expresión común/common expression language). Esto proporciona una alternativa más eficiente a la mutación de webhooks de admisión para tareas comunes como configurar etiquetas o inyectar contenedores sidecar. Es como tener un conjunto de reglas programables para modificar automáticamente los recursos a medida que ingresan a tu clúster.
Elastic Indexed Jobs: Escalar con elegancia
La versión v1.31 agrega más flexibilidad para administrar trabajos indexados al permitirte modificar dinámicamente el número deseado de finalizaciones (spec.completions
). Esto facilita la escala de tus cargas de trabajo de procesamiento por lotes hacia arriba o hacia abajo sin interrumpir el progreso del trabajo. Es como tener un acordeón para tus trabajos indexados, expandiéndose o contrayéndose para adaptarse a diversas cargas de trabajo.
Links y fuentes:
- Register with Email
- Login with LinkedIn
- Login with GitHub