¿Qué son las redes de Kubernetes?

Un hombre camina solo en los Alpes de Allgaeu

Autores

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

¿Qué son las redes 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 la comunicación entre todos los componentes principales que existen en su interior, como pods, nodos, contenedores y servicios; y fuera, como el tráfico externo de un clúster de Kubernetes.

Estos componentes se basan en cuatro métodos de red distintos para comunicarse:

1. Redes de contenedor a contenedor.

2. Redes de pod a pod.

3. Redes de pod a servicio.

4. Redes externas al servicio.

Vista aérea de una autopista

Mantenga su cabeza en la nube


Reciba el boletín semanal Think para obtener orientación de expertos sobre cómo optimizar la configuración multinube en la era de la IA.

¿Qué es Kubernetes?

El nombre Kubernetes proviene del griego y significa timonel o piloto. Basado en Borg, la plataforma interna de orquestación 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, el centro de código abierto y neutral para proveedores de la computación nativo de la nube. Desde entonces, Kubernetes se ha convertido en la herramienta de orquestación de contenedores más utilizada en todo el mundo para ejecutar cargas de trabajo basadas en contenedores.

Kubernetes, también conocido como k8s o kube, se diseñó explícitamente 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 apreciada por su rapidez y fiabilidad en cualquier entorno de infraestructura, ya sea on premises, 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 solo las bibliotecas y dependencias de la aplicación. Debido a que los contenedores comparten el mismo kernel 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 proveedor de la nube, incluidos Amazon Web Services (AWS), Google, Microsoft, IBM y Red Hat, integran Kubernetes en sus plataforma en la nube para mejorar las capacidades de Plataforma como Servicio (PaaS) e Infraestructura como Servicio (IaaS).

NS1 Connect

IBM NS1 Connect

Fortalezca la resiliencia de su red con IBM NS1 Connect. En este video, analizamos el valor de IBM NS1 Connect para la resiliencia y el rendimiento de las aplicaciones.

Arquitectura de Kubernetes

Los siguientes componentes fundamentales comprenden la arquitectura de Kubernetes:

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 se encargan de programar y escalar las aplicaciones.

Al gestionar todos los recursos informáticos, de red y de almacenamiento en un clúster de Kubernetes, el nodo maestro ayuda a garantizar que las aplicaciones y los servicios en contenedores se desplieguen 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.

Pods

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 despliegue de clústeres que también funcionan como unidades de escalabilidad.

Por ejemplo, si un contenedor en un pod experimenta un gran volumen de tráfico, Kubernetes puede replicar ese pod en otros nodos del clúster. Kubernetes también puede cerrar pods si el volumen de tráfico disminuye.

Otros componentes de Kubernetes incluyen:

Despliegue: el despliegue en Kubernetes gestiona un conjunto de pods para ejecutar una carga de trabajo de aplicación. Un despliegue identifica cuántas réplicas de un pod deben ejecutarse en el clúster. Si un pod falla, el despliegue crea uno nuevo.

Esta característica crítico ayuda a escalar el número de pod de réplicas, realizar actualizaciones de código y mantener la disponibilidad. Los despliegues se llevan a cabo mediante kubectl, la herramienta de línea de comandos específica de Kubernetes.

Kubernetes Service: un Kubernetes Service es una capa de abstracción que define un conjunto lógico de pods y cómo acceder a ellos. Un Kubernetes Service 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 de interfaz de programación de aplicaciones (API): el servidor API en Kubernetes expone la API de Kubernetes (la interfaz utilizada para administrar, 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 de computación básicas implican conectar dos o más dispositivos informáticos para compartir datos e intercambiar recursos, ya sea por cables (cableados) o WiFi.

En las redes físicas, los servidores físicos se conectan a equipamiento de red físicos, como conmutadores, enrutadores y cables Ethernet, para conectarse a Internet.

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

Antes de profundizar en el networking de Kubernetes, vale la pena comentar términos básicos de networking:

Host de red
: un host de red es cualquier computadora conectada a una red que proporciona información, aplicación o servicios a otros hosts o nodos en la red.

Internet Protocol dirección (IP):
una dirección IP es un número único asignado a cada dispositivo conectado a una red que emplea la IP para comunicar.



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, apuntando directamente a la computadora o dispositivo que utilizan. Puerto: un puerto identifica una conexión específica entre dispositivos de red. Un número identifica cada puerto. Las computadoras usan números de puerto para determinar qué aplicación, servicio o proceso debe recibir mensajes particulares.

Traducción de direcciones de red (NAT):
NAT cambia las direcciones internas o privadas a direcciones IP públicas o enrutables globalmente, lo que permite un acceso seguro a Internet.



 

NAT permite que una dirección IP única represente a todo un grupo de dispositivos informáticos. Agentes de nodo: los agentes de nodo son agentes administrativos que monitorean los servidores de aplicaciones en un sistema host y enrutan las solicitudes administrativas a otros 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. Proxy o servidor 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 de Kubernetes

Kubernetes proporciona un modelo de red que ayuda a dirección los retos que plantea la orquestación de aplicación en contenedores en 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 característica elimina la necesidad de crear vínculos entre los pods y los puertos de mapeo.

Debido a 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 clúster sin NAT.

Los agentes en un nodo, como el kubelet, el agente de nodo principal que se ejecuta en cada nodo, pueden comunicarse con todos los pods en ese nodo específico.

El modelo de redes de Kubernetes se aplica a 4 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 de 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 en el 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 y 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 existan.

Además, cada clúster de Kubernetes proporciona automáticamente un servicio de sistema de nombres de dominio (servicio DNS) además de la dirección IP del pod. El servicio DNS, en el que se asignan nombres a los pods y servicios, crea nombres fáciles de leer para los administradores, lo que proporciona 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 a servicio, 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 monitorea los cambios en los servicios y pods. A medida que se crean o destruyen pods, kube-proxy actualiza iptables (una empresa de servicios públicos utilizada para crear reglas en el cortafuegos del kernel de Linux para enrutar el tráfico) para reflejar ese cambio, de modo que el tráfico enviado a la IP del 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 ofrece varios Kubernetes service para facilitar el tráfico externo hacia un clúster:

ClusterIP:
aunque ClusterIP es el Kubernetes service predeterminado para 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 una computadora portátil o al 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 redes externas al servicio y, a menudo, se utiliza con fines de prueba, como probar el acceso público a una aplicación.

LoadBalancer:
el estándar para redes de servicios externos, LoadBalancer expone el servicio externamente mediante el uso del equilibrador de carga de un proveedor de la nube y asigna al servicio una dirección IP pública. El tráfico del equilibrador de carga externo se dirige entonces a los pods del backend.

ExternalName:
un servicio de nombres externos permite acceder a un servicio externo mediante un nombre DNS sin exponerlo en el clúster DNS. Este tipo de servicio ayuda a proporcionar un nombre DNS estable para servicios externos, como los servicios de mensajería no alojados dentro del 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 Ingress Controller es un equilibrador de carga que actúa como puente de red entre Kubernetes Service y los servicios externos.

Políticas de red de Kubernetes

Las políticas de red de Kubernetes son una construcción de aplicación que desempeña un papel vital en las redes de Kubernetes. Estas políticas permiten a los administradores y desarrolladores definir reglas que especifican cómo los pods pueden comunicarse entre sí y con otros puntos finales 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 las etiquetas y los 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 las políticas de seguridad mediante la definición de 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 crítico para situaciones de multitenancy cuando DevOps u otros equipos comparten el mismo clúster de Kubernetes pero trabajan en diferentes proyectos.

Para las empresas con requisitos de cumplimiento 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 ayuda a garantizar que el clúster cumpla con las políticas de la organización.

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

Container Network Interface (CNI) 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 redes basados en contenedores.

Si bien cada uno puede tener diferentes características y enfoques de redes, como redes superpuestas o enrutamiento directo, todos se adhieren a las especificaciones de CNI que son compatibles con Kubernetes.

Tutoriales de Kubernetes

Si desea empezar a trabajar con Kubernetes o quiere mejorar sus habilidades actuales con Kubernetes y las herramientas del ecosistema de Kubernetes, pruebe uno de estos tutoriales.

Soluciones relacionadas
Soluciones de red

Las soluciones de redes de IBM ofrecen conectividad centrada en aplicaciones y de alto rendimiento, que las hace ideales para las empresas digitales actuales.

Explore las soluciones de red
Seguridad de red de IBM Cloud

Proteja su infraestructura en la nube y servidores de actividades maliciosas con la seguridad de red de IBM Cloud.

Explore la seguridad de red en la nube
IBM Cloud

IBM Cloud es una plataforma en la nube diseñada para industrias reguladas, que proporciona soluciones abiertas, seguras, híbridas y preparadas para la IA.

Explore soluciones en la nube
Dé el siguiente paso

Potencie su negocio con soluciones avanzadas de gestión de DNS y redes en la nube. Mejore la confiabilidad de sus aplicaciones y optimice el rendimiento de la red con los servicios líderes de IBM.

Explore las soluciones de nube de IBM Descubra DNS Services gestionados