¿Qué es Kubernetes (k8s) y cómo funciona?

Autor: Publicado

En pocas palabras: Kubernetes, abreviado K8s, es una plataforma abierta para ejecutar y gestionar aplicaciones en contenedores. Se encarga de mantener en ejecución el número indicado de copias, sustituye las instancias que no están disponibles y facilita el despliegue de nuevas versiones. Resulta útil en sistemas complejos, pero para una web sencilla o una aplicación pequeña, mantenerlo puede ser más complicado que gestionar el propio alojamiento.

Del contenedor a la gestión de aplicaciones

Un contenedor es un entorno aislado donde se ejecuta un proceso de una aplicación. Se crea a partir de una imagen de contenedor: un paquete que incluye el código, las bibliotecas necesarias y la configuración de inicio. Esto permite ejecutar la misma versión de una aplicación en distintos entornos compatibles sin instalar manualmente todas sus dependencias.

Ejecutar un único contenedor es relativamente sencillo. Las dificultades aparecen cuando hay que gestionar muchas aplicaciones, distribuirlas entre varios servidores, actualizarlas sin interrupciones prolongadas y responder a los fallos. Kubernetes automatiza parte de estas tareas; este tipo de gestión se denomina orquestación de contenedores.

K8s es una abreviatura de Kubernetes: entre las letras «K» y «s» hay ocho letras. No designa un producto distinto ni otra versión de la plataforma.

Cómo funciona Kubernetes: clúster, nodos y pods

Un clúster es un entorno de Kubernetes formado por un plano de control y los nodos que ejecutan las aplicaciones. Un nodo, en inglés node, es una máquina física o virtual. En un entorno de pruebas pequeño, todos los componentes pueden ejecutarse en un solo ordenador.

El plano de control, o control plane, almacena la configuración y coordina el funcionamiento del clúster. Entre otras cosas, decide dónde ejecutar la aplicación. El software de los nodos ejecuta esas órdenes e informa del estado de las tareas en ejecución.

Kubernetes funciona según el principio del estado deseado. En lugar de iniciar manualmente cada copia de la aplicación, declaras, por ejemplo: «deben ejecutarse tres copias de esta versión». El sistema compara continuamente esa declaración con el estado real e intenta corregir las diferencias.

Para entender los fundamentos bastan cuatro conceptos:

La configuración suele guardarse en archivos YAML, un formato legible de datos en texto. Para trabajar con el clúster se utiliza, entre otras herramientas, la utilidad de línea de comandos kubectl.

Qué ocurre durante los fallos y las actualizaciones

Imagina una tienda en línea cuya parte encargada de atender las solicitudes se ejecuta en tres pods distribuidos entre varios nodos. El Deployment determina el número de copias y el Service dirige el tráfico a los pods disponibles. Si un pod deja de funcionar, Kubernetes intenta poner en marcha otro que lo sustituya.

Esto no supone una reparación inmediata ni incondicional. El clúster debe disponer de recursos libres, acceso a la imagen de la aplicación y una infraestructura operativa. Si la aplicación tiene un error que provoca un fallo cada vez que se inicia, reiniciar el pod no eliminará la causa.

Durante una actualización, Kubernetes puede sustituir gradualmente los pods antiguos por otros nuevos. Las comprobaciones de disponibilidad, que se configuran para verificar si la aplicación puede atender solicitudes, ayudan a evitar que el tráfico llegue a una copia que aún se está iniciando. Sin embargo, un despliegue sin interrupciones requiere una configuración y un diseño adecuados de la aplicación: la plataforma no lo garantiza automáticamente.

Con el escalado ocurre algo similar. Kubernetes permite cambiar el número de copias y, si se configura un mecanismo de escalado automático, puede hacerlo según métricas como el uso del procesador. Sin embargo, añadir pods no acelerará una base de datos sobrecargada ni resolverá otro cuello de botella compartido.

Qué no sustituye Kubernetes

Kubernetes no crea imágenes de aplicaciones ni sustituye todo el proceso de pruebas y publicación del código. Tampoco es sinónimo de Docker. Las herramientas de Docker ayudan, entre otras cosas, a crear contenedores y ejecutarlos localmente, mientras que Kubernetes gestiona su ejecución en el clúster mediante un entorno de ejecución adecuado, como containerd.

La plataforma no proporciona por sí sola una solución completa de monitorización, copias de seguridad o seguridad de las aplicaciones. Hay que planificar los permisos, las actualizaciones, la recopilación de registros y la protección de las credenciales. El acceso desde internet también requiere una configuración de red adecuada y, normalmente, componentes adicionales o servicios del proveedor.

Los datos requieren especial atención. Un pod puede desaparecer y volver a crearse, por lo que los archivos que deban conservarse no deberían almacenarse únicamente en la capa de escritura del contenedor. Kubernetes admite volúmenes persistentes, pero utilizarlos no sustituye una copia de seguridad ni un procedimiento de recuperación probado.

Cuándo tiene sentido implementar K8s

Conviene considerar Kubernetes si mantienes muchos servicios, los despliegas con frecuencia, necesitas escalarlos de forma independiente y cuentas con un equipo capaz de gestionar la plataforma. En ese caso, un método común de configuración y despliegue puede reducir el número de operaciones manuales.

Para un blog, una web corporativa o una única aplicación pequeña, un alojamiento más sencillo, un servidor virtual o una plataforma de aplicaciones gestionada suelen implicar menos tareas de mantenimiento. Es una valoración práctica, no una limitación técnica: una aplicación pequeña puede ejecutarse en Kubernetes, pero las ventajas quizá no compensen el esfuerzo necesario.

Un servicio gestionado de Kubernetes traslada parte de las responsabilidades al proveedor, aunque su alcance depende del servicio. Antes de elegir, consulta la documentación oficial y las tarifas para comprobar quién se encarga de las actualizaciones, la disponibilidad del plano de control y los cargos por servidores, discos, red y componentes adicionales.

Si estás empezando a conocer K8s, crea un clúster local de pruebas, por ejemplo, con kind o minikube. Despliega una aplicación sencilla con dos copias y elimina un pod. Observar cómo el sistema lo sustituye permite entender el mecanismo básico sin montar una infraestructura de producción.

Consulta también: ¿Qué es 2FA?

Lee también

Descubre cómo PHP-FPM atiende peticiones PHP, en qué se diferencia de un servidor web y cómo ajustar sus procesos al tráfico y los recursos.
Conoce BIND, el software abierto de servidor DNS: sus funciones, cómo gestiona dominios y cuándo conviene instalarlo por tu cuenta.
Descubre qué son el registro REGON de Polonia y su número, en qué se diferencian de NIP y KRS y cómo verificar los datos de una empresa.