Kubernetes, también denominado «K8s», es una plataforma de código abierto que se utiliza para gestionar y automatizar las tareas de distribución, programación, supervisión, mantenimiento y funcionamiento de contenedores de aplicaciones en un clúster de máquinas.
La red de Kubernetes fue desarrollada por Google. Permite a los administradores trasladar cargas de trabajo en infraestructuras de nube privada, pública e híbrida. Los desarrolladores utilizan Kubernetes para empaquetar aplicaciones de software con la infraestructura que necesitan y distribuir rápidamente las versiones nuevas.
Gracias a la red de Kubernetes, los componentes de Kubernetes pueden comunicarse entre sí y con otras aplicaciones. La plataforma de Kubernetes se diferencia de otras plataformas de red en que se basa en una estructura de red plana en la que no es necesario asignar los puertos de los hosts a los de los contenedores. La plataforma de Kubernetes ofrece un método para ejecutar sistemas distribuidos por el que las aplicaciones pueden compartir máquinas sin recurrir a la asignación dinámica de los puertos.
Una red de pods de Kubernetes conecta varios componentes interrelacionados:
Los distintos componentes de la plataforma de Kubernetes (pods, contenedores, nodos y aplicaciones) utilizan distintos métodos de red para comunicarse. Hay comunicación entre contenedores, entre pods, entre un pod y un servicio, y comunicación externa con un servicio.
La comunicación entre pods es la base de Kubernetes. Los pods se comunican entre sí siguiendo las políticas de red que define un complemento de la red. Se comunican sin crear explícitamente enlaces entre sí ni asignar puertos de contenedor a puertos de host. Los pods utilizan el mismo espacio de nombres de red y tienen sus propias direcciones IP. Por lo tanto, pueden encontrarse unos a otros y comunicarse con todos los demás pods de todos los nodos mediante «localhost» sin utilizar la traducción de direcciones de red (NAT).
Uno de los desafíos de la red de Kubernetes es hacer frente a la interacción entre el tráfico interno (este-oeste) y el externo (norte-sur), porque la red interna está aislada de la externa. Sin embargo, el tráfico que fluye entre los nodos también puede tener lugar entre los nodos y una máquina virtual o física externa. El tráfico externo puede llegar a un clúster de Kubernetes de distintas formas:
Un aspecto más importante de la red de Kubernetes es la interfaz de red de contenedores (CNI). La CNI conecta pods de distintos nodos y hace de interfaz bien entre un espacio de nombres de red y un complemento de red, o bien entre un proveedor de red y una red de Kubernetes. Se puede elegir entre muchos proveedores y complementos de la CNI, que ofrecen distintas características y funciones. Los complementos de la CNI tienen la capacidad de configurar dinámicamente redes y recursos a medida que se distribuyen y eliminan los pods. Implementan y gestionan las direcciones IP según se distribuyen y se eliminan los contenedores. Kubernetes es el proveedor de red predeterminado de Kubernetes, pero complementos de la CNI como Flannel, Calico, Canal y Weave Net ofrecen funciones adicionales.
Los administradores de red pueden implementar el modelo de red de Kubernetes de muchas formas distintas. Gartner reconoció los siguientes ejemplos de red de Kubernetes como «visionarios» en su informe del Cuadrante Mágico sobre redes de centros de datos de 2019:
VMware NSX Data Center ofrece una completa plataforma de virtualización de red y seguridad de capas 2-7, proporcionando la posibilidad de gestionar toda la red como una única entidad desde un solo panel de control.
Introducción a VMware Enterprise PKS Implemente, ejecute y gestione Kubernetes en producción de manera eficaz y productiva.
Proporcione toda la pila de red y seguridad integradas para las aplicaciones contenedorizadas y los microservicios.
Cree aplicaciones rápidamente, ejecute Kubernetes de código abierto de manera coherente y gestione todo su espacio con confianza.