Kubernetes v1.30 también conocido como "Uwubernetes" Ya ha llegado con una salva de funciones nuevas o mejoradas. Esta versión del orquestador de clústeres de contenedores, cuyo desarrollo está liderado por la CNCF, se ha beneficiado de las contribuciones de 863 empresas y 1.391 personas. En total, se han anunciado 45 mejoras, incluidas 17 ahora estables, 18 ahora en beta y 10 liberadas del huevo (alfa). Con motivo de su décimo aniversario (el primer depósito de código de K8s se remonta al 6 de junio de 2014), K8s ha elevado notablemente su nivel de seguridad, lo que no es un lujo dado que esta solución está sujeto a fallas.

Los permisos y controles de acceso se han revisado al alza, y ahora los contenedores y pods se pueden proteger a través del módulo Linux AppArmor para aplicar reglas de seguridad cuando se están ejecutando. Los pods también se pueden designar con nombres de usuario gracias a las propuestas de mejora de Kubernetes (KEP) 127 (soporte de espacios de nombres de usuario) para aislar un poco mejor los UID (identificadores únicos universales) y los GID (identificadores únicos de grupo). Las características Alpha de esta v1.30 también incluyen la integración del lenguaje de expresión común (CEL) para el control de admisión, que allana el camino para controles de políticas y mecanismos de validación más sofisticados para los clústeres de contenedores. Eso no es todo: las mejoras en los tokens de cuenta de servicio también mejoran la seguridad y la administración de cuentas de servicio. La introducción de montajes de volumen de clúster de contenedores de solo lectura (RRO) recursivos proporciona una capa adicional de seguridad. "Esta característica le permite configurar volúmenes y sus submontajes como de solo lectura, lo que evita cambios accidentales", afirma la publicación del blog que anuncia la última versión de Kubernetes. "Los montajes RRO garantizan que sus datos permanezcan intactos, lo que refuerza la seguridad de su clúster con protección adicional. Esto es especialmente importante en entornos estrictamente controlados, donde incluso los cambios más pequeños pueden tener consecuencias de gran alcance".

Índice
  1. Cambio de etiquetas recursivo en SELinux acelerado
  2. El robusto VolumeManager y la programación de pods también se estabilizaron

Cambio de etiquetas recursivo en SELinux acelerado

También se incluyen otras funciones (alfa) para mejorar el rendimiento. Comenzando con el cambio rápido y recursivo de etiquetas SELinux, montajes recursivos de solo lectura, política de éxito/finalización de trabajos, así como distribución de tráfico para servicios y migración de versiones de almacenamiento.

Desde la versión 1.27, Kubernetes ya incluye una optimización que establece etiquetas SELinux en el contenido de los volúmenes, pero aún era más lento porque requería que el entorno de ejecución del contenedor recorriera recursivamente todos los volúmenes y aplicara el etiquetado SELinux a cada archivo y directorio individualmente. "Esto es especialmente notorio para volúmenes con una gran cantidad de archivos y directorios. Kubernetes v1.27 graduó esta función a la versión beta, pero la limitó a los volúmenes ReadWriteOncePod", continúa la publicación del blog. "Con la versión 1.30, Kubernetes extiende la compatibilidad con la opción de montaje SELinux a todos los volúmenes con SELinuxMount". Desde Kubernetes v1.30, los trabajos indexados también admiten .spec.successPolicy para definir cuándo se puede declarar que un trabajo se realizó correctamente en función de la ejecución exitosa del pod. "Esto le permite definir dos tipos de criterios: successedIndexes indica que el trabajo puede declararse exitoso cuando estos índices tuvieron éxito, incluso si otros índices fallaron. SucceededCount indica que el trabajo puede declararse exitoso cuando la cantidad de índices exitosos alcanza este criterio. Una vez que el trabajo cumple con la política de éxito, el controlador del trabajo finaliza los pods pendientes", se lee en la publicación del blog.

El robusto VolumeManager y la programación de pods también se estabilizaron

Esta versión 1.30 también introduce el campo spec.trafficDistribution en un servicio de Kubernetes. El objetivo: expresar preferencias sobre cómo se debe enrutar el tráfico a los puntos finales del servicio. "Mientras que las políticas de tráfico se centran en garantías semánticas estrictas, la distribución del tráfico permite expresar preferencias (como el enrutamiento a puntos finales topológicamente más cercanos). Esto permite optimizar el rendimiento, el costo o la confiabilidad", asegura el equipo de K8s.

Por último, esta versión incluye una API integrada para StorageVersionMigration en la que Kubernetes puede reescribir datos en caliente en determinadas actividades de mantenimiento, y también se estabilizan varias funciones como Robust VolumeManager (para proporcionar información adicional sobre cómo se montan los volúmenes existentes al iniciar un kubelet), o la preparación de la programación de pods. "Esta función ahora estable permite a Kubernetes evitar intentar programar un pod que se ha definido, cuando el clúster aún no tiene los recursos aprovisionados para permitir que este Pod se vincule a un nodo [...] "El control personalizado sobre el permiso programático de un módulo también permite mecanismos de cuotas, controles de seguridad y más", explica la publicación del blog. Otras características que ahora se han estabilizado incluyen los dominios mínimos en PodTopologySpread y el cambio a los espacios de trabajo de Go para el repositorio de código k/k.