Qué es Kubernetes y los problemas que resuelve
Por qué los contenedores por sí solos dejan de escalar y cómo Kubernetes convierte un grupo de máquinas en una sola plataforma.
Kubernetes (a menudo abreviado K8s) es una plataforma de código abierto para ejecutar y gestionar aplicaciones en contenedores a través de muchas máquinas. Fue creada en Google y ahora es un proyecto de la Cloud Native Computing Foundation. Esta guía explica los problemas para los que existe y los pocos términos sobre los que se construye el resto de esta serie.
Los contenedores son la parte fácil
Un contenedor empaqueta una aplicación junto con las bibliotecas que necesita, de modo que se ejecuta igual en un portátil, en un servidor de pruebas y en producción. Los contenedores arrancan rápido, son baratos de reemplazar y se escalan ejecutando más copias. Eso encaja bien con las arquitecturas de microservicios, donde una aplicación se divide en muchos servicios pequeños, cada uno en su propio contenedor.
Qué se rompe sin orquestación
Ahora ejecuta esos contenedores tú mismo en una sola máquina virtual y observa qué ocurre:
- El host se llena. Cuando la máquina se queda sin CPU o memoria libre, tienes que iniciar contenedores nuevos en otro lugar y conectarlos con el resto a mano.
- Los contenedores mueren y nadie se entera. Los contenedores son desechables por diseño. Reiniciar uno que se ha caído es algo que debes automatizar con scripts o hacer manualmente.
- El propio host falla. Todos los contenedores que hay en él caen a la vez, y nada los trae de vuelta.
Puedes escribir scripts para cada uno de estos casos, pero cuando una aplicación son cientos de contenedores en varios entornos, esa herramienta casera se convierte en un proyecto en sí misma.
Lo que aporta un orquestador
Kubernetes se encarga de esas tareas:
- Alta disponibilidad. Ejecuta varias copias de una carga de trabajo en máquinas distintas para que los usuarios no noten cuando una falla.
- Escalado. Aumenta o disminuye el número de copias según cambia la carga, a mano o automáticamente.
- Autorreparación. Reinicia los contenedores fallidos y reprograma las cargas de trabajo de máquinas fallidas a otras sanas.
- Estado recuperable. La configuración y el estado del clúster viven en un almacén de datos (etcd) del que puedes hacer copias de seguridad y restaurar.
Los bloques de construcción: pods, nodos y clústeres
Tres términos cubren la mayor parte del vocabulario:
- Un Pod es lo más pequeño que ejecuta Kubernetes. Envuelve uno o más contenedores que comparten red y almacenamiento. La mayoría de los Pods contienen un contenedor principal, ocasionalmente con un ayudante al lado. Kubernetes gestiona Pods, no contenedores sueltos.
- Un nodo es una máquina, virtual o física, que ejecuta Pods.
- Un clúster es un conjunto de nodos gestionados como un solo pool de CPU y memoria. Algunos nodos forman el plano de control que gestiona el clúster, y el resto son nodos worker que ejecutan tus aplicaciones. La siguiente guía cubre cómo funcionan.
El modelo declarativo
No le dices a Kubernetes qué pasos seguir. Describes el estado que quieres, normalmente en YAML (“tres réplicas de esta imagen, expuestas en este puerto”), y lo envías a la API del clúster. Los controladores dentro de Kubernetes comparan continuamente lo que existe con lo que pediste y actúan sobre la diferencia. Por eso un Pod que eliminas vuelve cuando un Deployment dice que deberían existir tres, y es la base de todo lo demás en esta serie.
Lo que Kubernetes no hace por ti
Kubernetes es una plataforma, no una solución completa:
- No construye tus imágenes ni prueba tu código. Eso sigue siendo trabajo del CI.
- No hace copias de seguridad de los datos de tu aplicación. El almacenamiento persistente y las copias de seguridad son tu responsabilidad.
- No cifra los Secrets por defecto, y sus ajustes predeterminados no están reforzados para producción.
- Es un sistema grande con una curva de aprendizaje real, así que practica primero en un clúster local, que es lo que hacen las siguientes guías.
Guías populares
-
Cómo funciona un clúster de Kubernetes: plano de control y nodos Los componentes que hacen funcionar un clúster y qué ocurre entre kubectl apply y un contenedor en ejecución. -
Deployments: escalado, autorreparación y rolling updates Ejecuta réplicas de un Pod, actualízalas sin tiempo de inactividad y revierte cuando un despliegue sale mal. -
Services: networking estable para Pods efímeros Dale a los Pods una dirección estable, exponlos dentro y fuera del clúster y restringe quién puede hablar con quién. -
Depura un Pod que falla: describe, logs, exec y port-forward Una lista de comprobación repetible para averiguar por qué un Pod está Pending, se cae o no responde.