¿Qué es una red de Kubernetes?

 

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.

Equilibrio de carga moderno con servicios de aplicaciones definidos por software

Más información 

¿Qué es una red de pods de Kubernetes?

Una red de pods de Kubernetes conecta varios componentes interrelacionados:

  • Pods: los pods de Kubernetes están inspirados en la naturaleza, en conceptos como, por ejemplo, las vainas de los guisantes o los grupos de ballenas. Los pods son grupos de contenedores que comparten los recursos de red y almacenamiento de un mismo nodo. Se crean con un servidor de API y su asignación se efectúa mediante una controladora. Cada pod recibe una dirección IP. Todos los contenedores de un pod comparten el almacenamiento, la dirección IP y el espacio de puertos (espacio de nombres de red). 
  • Contenedores: un contenedor de Kubernetes es como una máquina virtual cuyo sistema operativo utilizan varias aplicaciones. Tiene sistema de archivos, CPU, memoria y espacio de procesamiento propios. Los contenedores se crean siempre dentro de pods, y en un pod se pueden crear varios contenedores. Todos los contenedores de un pod se trasladan, programan y eliminan juntos. El pod se puede cambiar de nube. Los contenedores se pueden conectar entre sí, a un host y a redes externas mediante una red de contenedores.
  • Nodos: los pods se ejecutan siempre en un nodo subordinado. Los nodos son máquinas en las que se ejecutan aplicaciones contenedorizadas. En Kubernetes, los nodos se agrupan en clústeres.
  • Nodo principal: cada clúster de nodos debe tener al menos un nodo principal que gestiona los nodos subordinados. El nodo principal se puede comunicar con cada nodo de un clúster o directamente con cada uno de los pods.

¿Cómo funciona una red de Kubernetes?

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:

  • LoadBalancer: LoadBalancer es el método estándar para conectar un servicio a Internet externamente. En este caso, un equilibrador de carga de red envía todo el tráfico externo a un servicio. Cada servicio recibe su propia dirección IP.
  • ClusterIP: ClusterIP es el servicio de comunicaciones internas de Kubernetes predeterminado. No obstante, el tráfico externo puede acceder al servicio CulsterIP predeterminado de Kubernetes a través de un proxy. Este método puede resultar útil para depurar servicios o para mostrar paneles de gestión internos. 
  • NodePort: NodePort abre puertos en los nodos o las máquinas virtuales y el tráfico se envía de los puertos al servicio. Se suele utilizar para servicios que no tienen que estar siempre disponibles, por ejemplo, aplicaciones de demostración.
  • Ingress: Ingress hace de enrutador o controladora para dirigir el tráfico a los servicios a través de un equilibrador de carga. Resulta útil si se quiere utilizar la misma dirección IP para exponer varios servicios.

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.

 

Cómo implementar una red de Kubernetes

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:

  • Big Cloud Fabric de Big Switch Networks: arquitectura de red nativa de nube que ejecuta Kubernetes en entornos de nube privada.
  • Cumulus NetQ: sistema de validación de estructuras basado en telemetría que proporciona visibilidad de las implementaciones de contenedores.
  • Dell EMC: plataforma nativa de nube que admite tanto aplicaciones tradicionales como entornos nativos de nube. Tiene compatibilidad integrada con Kubernetes y contenedores.
  • VMware NSX-T: plataforma de virtualización de red y seguridad que virtualiza la red de los entornos multinube o con varios hipervisores, incluida la red de contenedores nativa.

Redes con Kubernetes

Video Play Icon

Productos, soluciones y recursos relacionados con la red de Kubernetes de VMware

VMware NSX: plataforma empresarial líder de virtualización de red y seguridad

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.

VMware Enterprise PKS

Introducción a VMware Enterprise PKS Implemente, ejecute y gestione Kubernetes en producción de manera eficaz y productiva.

Redes de contenedores con VMware NSX

Proporcione toda la pila de red y seguridad integradas para las aplicaciones contenedorizadas y los microservicios.

VMware Tanzu

Cree aplicaciones rápidamente, ejecute Kubernetes de código abierto de manera coherente y gestione todo su espacio con confianza.