¿Qué es la red de Kubernetes?
Explore el servicio IBM Cloud Kubernetes
Diferentes formas conectadas en red

Publicado: 21 de noviembre de 2023
Colaboradores: Stephanie Susnjara, Ian Smalley

¿Qué es la red de Kubernetes?

Las redes de Kubernetes proporcionan la infraestructura de red para permitir la comunicación, la escalabilidad, la seguridad y el acceso externo para aplicaciones contenedorizadas. La red es compleja e implica comunicación entre todos los componentes principales que residen dentro (p. ej., pods, nodos, contenedores, servicios) y fuera (p. ej., tráfico externo) de un clúster de Kubernetes.

Para comunicarse, estos componentes utilizan cuatro métodos de red distintos:

1. Redes de contenedor a contenedor

2. Redes de pod a pod

3. Redes de pod a servicio

4. Redes externas al servicio

Automatización de la elasticidad del contenedor orientada a la aplicación

Para ingenieros de plataformas y DevOps que buscan operacionalizar la velocidad de comercialización y al mismo tiempo garantizar el rendimiento de las aplicaciones

Contenido relacionado

Suscríbase al boletín de IBM

¿Qué es Kubernetes?

El nombre Kubernetes proviene del griego y significa timonel o piloto. Basado en Borg, la plataforma de orquestación interna de contenedores de Google, Kubernetes, se presentó al público como una herramienta de código abierto en 2014. Ese mismo año, Google donó Kubernetes a la Cloud Native Computing Foundation (enlace externo a ibm.com), el centro de código abierto y neutral del proveedor de la informática nativa de la nube. Desde entonces, Kubernetes se ha convertido en la herramienta de orquestación de contenedores más utilizada para ejecutar cargas de trabajo basadas en contenedores en todo el mundo.

Kubernetes, también denominado "k8s" o "kube», se diseñó expresamente para automatizar la gestión de contenedores, la unidad estándar de software que empaqueta el código y todas sus dependencias. La herramienta de orquestación es muy valiosa para funcionar de forma rápida y fiable en cualquier entorno de infraestructura, ya sea en local, en la nube privada, en la nube pública o en la nube híbrida.

A diferencia de las máquinas virtuales (VM) que virtualizan el hardware físico, los contenedores virtualizan el sistema operativo (como Linux o Windows). Cada contenedor contiene únicamente las bibliotecas y dependencias de la aplicación. Dado que los contenedores comparten el mismo núcleo del sistema operativo que el host, se consideran ligeros, rápidos y portátiles.

Kubernetes y su ecosistema de servicios, soporte y herramientas se han convertido en la base de la infraestructura moderna en la nube y la modernización de aplicaciones. Todos los principales proveedores de servicios en la nube, incluidos Amazon Web Services (AWS), Google, Microsoft, IBM y Red Hat, integran Kubernetes en sus plataformas en la nube para mejorar las capacidades de Plataforma como servicio (PaaS) e Infraestructura como servicio (IaaS).

Arquitectura de Kubernetes

La arquitectura de Kubernetes consta de los siguientes componentes fundamentales: 

Clúster

Un clúster de Kubernetes es un conjunto de máquinas físicas o virtuales (nodos) que funcionan juntas para ejecutar aplicaciones en contenedores. Los clústeres conforman la base de la arquitectura de Kubernetes.

Nodos maestros

Los nodos maestros representan un único host informático, ya sea una máquina virtual o física. Alojan los componentes del plano de control de Kubernetes y son responsables de programar y escalar aplicaciones. Al administrar todos los recursos informáticos, de red y de almacenamiento en un clúster de Kubernetes, el nodo maestro garantiza que las aplicaciones y los servicios en contenedores se implementen por igual en los nodos de trabajo del clúster.

Nodos de trabajo

Los nodos de trabajo son responsables de ejecutar los contenedores y de realizar cualquier trabajo asignado por el nodo maestro. También alojan contenedores de aplicaciones, que se agrupan en pods.

Vainas

Los pods son grupos de uno o más contenedores (como Linux o Docker) que comparten los mismos recursos informáticos y red. Son unidades de implementación de clústeres que también funcionan como unidades de escalabilidad. Por ejemplo, si un contenedor de un pod experimenta un gran volumen de tráfico, Kubernetes puede replicar ese pod en otros nodos del clúster. Kubernetes también puede apagar pods si el volumen de tráfico disminuye.

Entre los componentes adicionales de Kubernetes se incluyen los siguientes:

  • Implementación: la implementación en Kubernetes gestiona un conjunto de pods para ejecutar una carga de trabajo de la aplicación. Una implementación identifica cuántas réplicas de un pod deben ejecutarse en el clúster. Si un pod falla, la implementación creará uno nuevo. Esta característica crítica ayuda a escalar el número de réplicas, actualizar el código y mantener la disponibilidad. Las implementaciones se realizan utilizando kubectl, la herramienta de línea de comandos específica de Kubernetes. 
  • Servicio: un servicio Kubernetes es una capa de abstracción que define un conjunto lógico de pods y cómo acceder a ellos. Un servicio expone una aplicación de red que se ejecuta en uno o más pods de un clúster. Proporciona una forma abstracta de equilibrar la carga de los pods. 
  • Servidor API: el servidor API de Kubernetes expone la API de Kubernetes (la interfaz utilizada para gestionar, crear y configurar clústeres de Kubernetes) y sirve como punto de entrada para todos los comandos y consultas.
Términos y conceptos de redes

Las redes informáticas básicas implican conectar dos o más dispositivos informáticos para compartir datos e intercambiar recursos, ya sea por cable o a través de una red wifi WiFi.

En las redes físicas, los servidores físicos están conectados a equipos de red físicos: conmutadores, enrutadores y cables Ethernet para conectarse a Internet. 

En las redes virtuales, redes definidas por software (SDN), componentes como dispositivos Ethernet virtuales e interfaces virtuales se instalan en servidores nativos o máquinas virtuales para conectarse a Internet. La implementación de Kubernetes se basa en SDN para configurar y administrar la comunicación de red entre clústeres.

Antes de profundizar en la interconexión de Kubernetes, conviene repasar los términos básicos de interconexión:

  • Host de red: un host de red es cualquier ordenador conectado a una red que proporciona información, aplicaciones o servicios a otros hosts o nodos de la red.
  • Dirección IP (Internet Protocol): una dirección IP es un número único asignado a cada dispositivo conectado a una red que utiliza el Internet Protocol para la comunicación. Identifica la red host del dispositivo y la ubicación del dispositivo en la red host.
  • Localhost: Localhost es un nombre de host predeterminado que actúa como una dirección IP privada y apunta directamente al ordenador o dispositivo que utilizan.
  • Puerto: un puerto identifica una conexión específica entre dispositivos de red. Un número identifica cada puerto. Los equipos utilizan números de puerto para determinar qué aplicación, servicio o proceso deben recibir mensajes específicos mensajes específicos.
  • NAT (traducción de direcciones de red): NAT cambia las direcciones internas o privadas a direcciones IP públicas o globalmente enrutables, lo que permite un acceso seguro a Internet. NAT permite que una dirección IP única represente un grupo completo de dispositivos informáticos.
  • Agentes de nodo: los agentes de nodo son agentes administrativos que monitorizan los servidores de aplicaciones en un sistema host y dirigen las peticiones administrativas a los servidores.
  • Espacio de nombres de red: un espacio de nombres de red es una colección de interfaces de red e instrucciones de tabla de enrutamiento que proporciona aislamiento entre dispositivos de red.
  • Servidor proxy/proxy: un proxy proporciona una puerta de enlace entre los usuarios e Internet. 
¿Cómo funcionan las redes de Kubernetes?

Kubernetes se creó para ejecutar sistemas distribuidos con un plano de red distribuido en un clúster de máquinas. Además de proporcionar interconectividad entre componentes, las redes de clústeres de Kubernetes crean un entorno perfecto en el que los datos pueden moverse de forma libre y eficiente a través de redes definidas por software.

Otra característica distintiva de las redes de Kubernetes es su estructura de red plana, lo que significa que todos los componentes pueden conectarse sin depender de otro hardware. En Kubernetes, todos los pods de un clúster se pueden comunicar con todos los demás dispositivos, independientemente del nodo en el que se ejecute. La red plana ofrece un modo eficaz de compartir recursos y elimina la necesidad de asignar puertos de forma dinámica.

En general, las redes Kubernetes abstraen la complejidad, lo que permite a los desarrolladores y operadores centrarse en crear y mantener aplicaciones en lugar de ocuparse de intrincadas configuraciones de red.

Modelo de red Kubernetes

Kubernetes proporciona un modelo de red para ayudar a abordar los retos de la orquestación de aplicaciones en contenedores a través de un entorno distribuido. El tiempo de ejecución del contenedor en cada nodo implementa el modelo de red y se adhiere a las siguientes reglas:

  • Cada pod tiene su propia dirección IP, que se puede enrutar dentro del clúster. Esta función elimina la necesidad de crear vínculos entre pods y puertos de representación cartográfica.
  • Dado que cada pod tiene su propia dirección IP, no se requiere NAT. Todos los pods pueden comunicarse con todos los demás pods del cluster sin NAT.
  • Los agentes de un nodo (como el kubelet, el agente de nodo principal que se ejecuta en cada nodo) pueden comunicarse con todos los pods de ese nodo específico. 

El modelo de red de Kubernetes se aplica a cuatro tipos básicos de comunicación de Kubernetes:

1. Redes de contenedor a contenedor

Los contenedores son la unidad más pequeña de una red Kubernetes. En las configuraciones de red básicas, los contenedores se comunican dentro de un único pod a través de localhost. Esta comunicación es posible porque los contenedores de un mismo pod comparten el mismo espacio de nombres de red, que incluye recursos de red como almacenamiento, dirección IP y espacio de puertos.

2. Redes de pod a pod

La comunicación de pod a pod incluye la comunicación entre pods en el mismo nodo, así como la comunicación entre pods en diferentes nodos. Cada pod en un clúster de Kubernetes tiene su propia dirección IP única, lo que permite la comunicación directa entre pods independientemente del nodo en el que residan. Además, cada clúster de Kubernetes proporciona automáticamente un servicio DNS (servicio de sistema de nombres de dominio) además de la dirección IP del pod. El servicio DNS en el que se asignan nombres a pods (y servicios) crea nombres fáciles de leer para los administradores, proporcionando un mecanismo ligero para la detección de servicios.

3. Redes de pod a servicio

Un servicio en Kubernetes es una abstracción que define un conjunto lógico de pods y permite la exposición externa del tráfico, el equilibrio de carga y el descubrimiento de servicios a esos pods. Los servicios facilitan la comunicación entre pods y servicios y entre externos y servicios.

Según el modelo de red Kubernetes, las direcciones IP de pods son efímeras. Por lo tanto, si un pod falla o se elimina y se crea un nuevo pod en su lugar, lo más probable es que el nuevo pod reciba una nueva dirección IP.

En la comunicación pod-to-service, ClusterIP es un tipo de servicio que proporciona una dirección IP virtual estable a un conjunto de pods. Esta IP interna sólo es accesible dentro del clúster y se puede utilizar para comunicaciones internas entre pods y servicios.

El kube-proxy, instalado en cada nodo de un clúster, mantiene las reglas de red en el host y monitoriza los cambios en los servicios y pods. A medida que se crean o destruyen pods, el kube-proxy actualiza IPtables (un programa de utilidad diseñado para crear reglas en el firewall del núcleo de Linux para enrutar el tráfico) para reflejar ese cambio, de modo que el tráfico enviado a la IP de servicio se enrute correctamente.

4. Redes externas al servicio

Las redes externas a servicios se refieren a la exposición y el acceso a servicios, como servicios externos o bases de datos, desde fuera del clúster Kubernetes. 

Kubernetes proporciona varios servicios para facilitar el tráfico externo a un clúster:

  • ClusterIP: aunque ClusterIP es el servicio predeterminado de Kubernetes para las comunicaciones internas, el tráfico externo puede acceder a él a través del kube-proxy. ClusterIP puede ser útil al acceder a un servicio en un portátil o depurar un servicio.
  • NodePort: NodePort expone el servicio en un puerto estático en la IP de cada nodo, lo que hace que el servicio sea accesible fuera del clúster. El NodePort es la forma más básica de realizar una conexión de red externa a un servicio y se utiliza a menudo con fines de prueba, como por ejemplo para probar el acceso público a una aplicación.
  • LoadBalancer: el LoadBalancer, el estándar para la conexión en red de servicios externos, expone el servicio externamente utilizando el balanceador de carga de un proveedor de nube y asigna al servicio una dirección IP pública. El tráfico del equilibrador de carga externo se dirige a los pods de backend.
  • ExternalName: un servicio de nombres externos permite el acceso a un servicio externo por nombre DNS sin exponerlo en el clúster de DNS. Este tipo de servicio ayuda a proporcionar un nombre DNS estable para servicios externos, como servicios de mensajería no alojados en el clúster. 
  • Entrada: la entrada de Kubernetes es una colección de reglas de enrutamiento que rodean el acceso externo a los servicios dentro del clúster. El controlador de entrada es un equilibrador de carga que actúa como un puente de red entre los servicios de Kubernetes y los servicios externos. 
Políticas de red Kubernetes

Las políticas de red de Kubernetes son una construcción de aplicación que desempeña un papel vital en la red Kubernetes. Estas políticas permiten a los administradores y desarrolladores definir reglas que especifican cómo pueden comunicarse los pods entre sí y con otros endpoints de la red. Las políticas de red se aplican mediante la API de políticas de red de Kubernetes y constan de los siguientes componentes básicos: 

  • Selector de pods: el selector de pods especifica a qué pods se aplica la política en función de etiquetas y selectores.
  • Entrada: la entrada define reglas para el tráfico entrante a los pods
  • Salida: la salida define reglas para el tráfico saliente de los pods.

Las políticas de red de Kubernetes ayudan a definir y gestionar políticas de seguridad al definir reglas que controlan qué pods pueden comunicarse entre sí, evitando así el acceso no autorizado y los ataques maliciosos. Las políticas de red también garantizan el aislamiento entre pods y servicios para que solo esos pods o servicios puedan comunicarse con un conjunto permitido de pares. Por ejemplo, el aislamiento es fundamental para situaciones de múltiples arrendatarios cuando DevOps u otros equipos comparten el mismo clúster de Kubernetes pero trabajan en diferentes proyectos.

Para las empresas con requisitos de conformidad específicos, las políticas de red ayudan a especificar y aplicar los controles de acceso a la red. Esto ayuda a cumplir con los estándares regulatorios y garantiza que el clúster cumpla con las políticas de la organización.

Interfaz de red de contenedores (CNI) y complementos de red

La interfaz de red de contenedores (CNI, por sus siglas en inglés) es otra característica esencial vinculada a las redes de Kubernetes. Creado y mantenido por Cloud Native Computing Foundation y utilizado por Kubernetes y otros tiempos de ejecución de contenedores, incluidos RedHat OpenShift® y Apache Mesos, CNI es una especificación estandarizada y un conjunto de API que definen cómo los complementos de red deben habilitar las redes de contenedores. Los complementos de CNI pueden asignar direcciones IP, crear espacios de nombres de red, configurar rutas de red, etc. para permitir la comunicación de pod a pod, tanto dentro del mismo nodo como entre nodos.

Si bien Kubernetes proporciona un CNI predeterminado, numerosos complementos CNI de terceros, incluidos Calico, Flannel y Weave, están diseñados para manejar la configuración y la seguridad en entornos de red basados en contenedores. Aunque cada una de ellas tiene características y enfoques diferentes para las redes, como las redes de superposición o el enrutamiento directo, todas cumplen con las especificaciones CNI compatibles con Kubernetes. 

Tutoriales de Kubernetes

Si quieres empezar a trabajar con Kubernetes o quieres mejorar tus habilidades actuales con Kubernetes y las herramientas del ecosistema de Kubernetes, prueba uno de estos tutoriales.

Tutoriales de Kubernetes: laboratorios prácticos con certificación

Formación interactiva basada en navegador para implementar y operar un clúster en IBM Cloud Kubernetes Service. No se requieren descargas ni configuración.

8 consejos y trucos de Kubernetes Tutoriales de Kubernetes sobre IBM Developer Implemente una aplicación de microservicios en IBM Cloud utilizando Kubernetes
Soluciones relacionadas
IBM Cloud® Kubernetes Service

Implemente clústeres seguros y de alta disponibilidad en una experiencia nativa de Kubernetes.

Explore el servicio IBM Cloud Kubernetes

Red Hat OpenShift® on IBM Cloud

Con Red Hat OpenShift on IBM® Cloud, los desarrolladores OpenShift tienen una forma rápida y segura contenerizar e implementar cargas de trabajo empresariales en clústeres Kubernetes.

Explore Red Hat OpenShift on IBM Cloud

IBM Cloud Code Engine

IBM Cloud Code Engine, una plataforma serverless totalmente gestionada, le permite ejecutar su contenedor, código de aplicación o trabajo por lotes en un tiempo de ejecución de contenedor totalmente gestionado.

Explore IBM Cloud Code Engine
Recursos Formación en IBM® Cloud para desarrolladores

Desarrolle sus habilidades en Kubernetes realizando los cursos contenidos en la certificación IBM® Cloud Professional Developer.

El espectáculo debe continuar

Estudiantes exponen sus obras con Red Hat® OpenShift® en IBM® Cloud.

Contenedores en la empresa

Los contenedores forman parte de una estrategia de nube híbrida que permite crear y gestionar cargas de trabajo desde cualquier lugar.

¿Qué es Kubernetes?

Kubernetes es una plataforma de orquestación de contenedores para programar y automatizar la implementación, la administración y el escalado de aplicaciones en contenedores.

¿Qué son los contenedores?

Los contenedores son unidades ejecutables de software en las que el código de la aplicación se empaqueta junto con sus bibliotecas y dependencias, de forma común para que el código pueda ejecutarse en cualquier lugar.

¿Qué es la orquestación de contenedores?

La orquestación de contenedores automatiza y simplifica el suministro, la implementación y la gestión de aplicaciones en contenedores.

Dé el siguiente paso

Consulte IBM Cloud Kubernetes Service y obtenga un clúster de forma totalmente gratuita. Todo lo que tiene que hacer es crear una cuenta gratuita de IBM Cloud y podrá obtener un clúster para probarlo durante 30 días. ¿Quieres saber más sobre la tarificación? Configure, valore y cite su clúster de Kubernetes.

Obtener un clúster de forma gratuita Ver opciones de precios