Conceptos básicos de Kubernetes

Kubernetes (también conocido como K8s) es un sistema de orquestación de contenedores de código abierto para programar y automatizar déploiement, escalado y gestión de aplicaciones en contenedores. Originalmente diseñado por Google, la Cloud Native Computing Foundation (CNCF) mantiene ahora este proyecto.
Según el CNCF, Kubernetes es una tecnología de uso generalizado para ejecutar aplicaciones distribuidas en la nube, con un 96% de organizaciones que la utilizan o la evalúan en su encuesta de 2021. Las organizaciones avantage de una escalabilidad y disponibilidad mejoradas gracias al autoescalado de recursos, la portabilidad a través de infraestructuras alojadas sur site o en nubes públicas o privadas híbridas, la resiliencia al garantizar que los clústeres funcionen siempre, y mucho más.
Para ofrecer estas ventajas, Kubernetes ejecuta cargas de trabajo colocando contenedores en pods que se ejecutan en nodos de un clúster.
Contenedor
Un contenedor es un paquete de software ligero, listo para ejecutarse, que incluye todo lo necesario para ejecutar una aplicación: el código y cualquier tiempo de ejecución que requiera, las bibliotecas de la aplicación y del sistema, y otras dependencias de la aplicación. Los contenedores son similares a las máquinas virtuales (VM) con una diferencia muy importante. Las VM virtualizan a nivel de hardware, mientras que los contenedores lo hacen a nivel de sistema operativo. Esto es lo que permite que los contenedores sean portables entre nubes, así como entre distribuciones de sistemas operativos.
Vainas
Los contenedores se ejecutan en un pod, la unidad de ejecución más pequeña de Kubernetes. Los pods son efímeros (temporales) por naturaleza, si un pod (o el nodo en el que se ejecuta) falla, Kubernetes puede crear automáticamente una nueva réplica de ese pod para continuar las operaciones.
Nodo/Cluster
Un nodo Kubernetes es la máquina física o virtual de un clúster (un conjunto de nodos) que ejecuta cargas de trabajo para uno o más contenedores. Su finalidad es exponer recursos de computación, redes y almacenamiento.
Cada nodo Kubernetes incluye un tiempo de ejecución de contenedores, a Kubelet y un Kube-Proxy:
- Un tiempo de ejecución de contenedores como Docker, rkt y runC gestiona el ciclo de vida del contenedor, creando, ejecutando y destruyendo contenedores según sea necesario.
- El Kubelet es el agente de Kubernetes que interactúa con el tiempo de ejecución del contenedor para realizar operaciones como iniciar, detener y mantener contenedores.
- Kube-Proxy es un proxy de red y balance de carga que orquesta la red para dirigir las peticiones a los pods apropiados.