Conceptos de redes de contenedores

Se aplica a: AKS en Azure Stack HCI 22H2, AKS en Windows Server

En el enfoque de microservicios basados en contenedores, los componentes de la aplicación deben funcionar juntos para procesar sus tareas. Kubernetes proporciona recursos que permiten la comunicación entre las aplicaciones y le permite conectarse a las aplicaciones y exponerlas de forma interna o externa. Para compilar aplicaciones de alta disponibilidad, puede equilibrar la carga de sus aplicaciones.

Las aplicaciones más complejas pueden requerir la configuración del tráfico de entrada para la terminación SSL/TLS o el enrutamiento de varios componentes. Por motivos de seguridad, es posible que deba restringir el flujo de tráfico de red entre los pods y los nodos.

En este artículo se presentan los conceptos básicos que proporcionan redes a las aplicaciones en AKS habilitados por Arc:

  • Servicios de Kubernetes
  • Controlador de entrada
  • Directivas de red

Servicios de Kubernetes

Para simplificar la configuración de red de las cargas de trabajo de la aplicación, Kubernetes usa servicios para agrupar lógicamente un conjunto de pods y proporcionar conectividad de red. Están disponibles los siguientes tipos de servicio:

IP del clúster: crea una dirección IP interna para su uso en el clúster de Kubernetes. Use una dirección IP de clúster solo para aplicaciones internas que admiten otras cargas de trabajo dentro del clúster.

Diagrama que muestra el flujo de tráfico ip del clúster en un clúster de AKS.

NodePort: crea una asignación de puertos en el nodo subyacente que permite que se acceda directamente a la aplicación con la dirección IP y el puerto del nodo.

Diagrama que muestra el flujo de tráfico de NodePort en un clúster de AKS.

LoadBalancer: crea un recurso de Equilibrador de carga de Azure, configura una dirección IP externa y conecta los pods solicitados al grupo de back-end del equilibrador de carga. Para permitir que el tráfico de los clientes llegue a la aplicación, se crean reglas de equilibrio de carga en los puertos deseados.

Diagrama que muestra el flujo de tráfico del equilibrador de carga en un clúster de AKS.

Para otro control y enrutamiento del tráfico entrante, puede usar un controlador de entrada.

Nota

Al implementar un clúster de destino que comparte una red con otro clúster de destino, existe la posibilidad de que se produzca un conflicto de direcciones IP del equilibrador de carga. Esto puede ocurrir si se implementan dos cargas de trabajo que usan puertos diferentes en clústeres de destino que comparten el mismo objeto AksHciClusterNetwork. La forma en que se asignan las direcciones IP y las asignaciones de puertos dentro del proxy de alta disponibilidad puede provocar una asignación duplicada de direcciones IP. Si esto ocurre, una o ambas cargas de trabajo pueden encontrar problemas de conectividad de red aleatorios hasta que vuelva a implementar las cargas de trabajo. Al volver a implementar las cargas de trabajo, puede usar el mismo puerto que hace que cada carga de trabajo reciba una dirección IP de servicio independiente o puede volver a implementar las cargas de trabajo en clústeres de destino que usan objetos diferentes AksHciClusterNetwork .

ExternalName: crea una entrada DNS específica para facilitar el acceso a las aplicaciones. Las direcciones IP de los equilibradores de carga y servicios pueden ser direcciones internas o externas en función de la configuración de red general, y se pueden asignar dinámicamente. O bien, puede especificar el uso de una dirección IP estática existente. A menudo, una dirección IP estática existente está asociada a una entrada DNS. Solo se asigna una dirección IP privada a los equilibradores de carga internos, por lo que no se puede acceder a ellos desde Internet.

Aspectos básicos de redes de Kubernetes en Azure Stack HCI

Para permitir el acceso a las aplicaciones o para que los componentes de las aplicaciones se comuniquen entre sí, Kubernetes proporciona una capa de abstracción para la red virtual. Los nodos de Kubernetes están conectados a la red virtual y pueden proporcionar conectividad de entrada y salida para los pods. El componente kube-proxy que se ejecuta en cada nodo proporciona estas características de red.

En Kubernetes, los servicios agrupan los pods de forma lógica para permitir:

  • Acceso directo a través de una sola dirección IP o nombre DNS y un puerto específico.
  • La distribución del tráfico mediante un equilibrador de carga entre varios pods que hospedan el mismo servicio o aplicación.

La plataforma de Azure Stack HCI también ayuda a simplificar las redes virtuales para los clústeres de AKS en Azure Stack HCI al proporcionar la red "subyacente" con una alta disponibilidad. Cuando se crea un clúster de AKS, también se crea y se configura un recurso de equilibrador de carga HAProxy subyacente. A medida que se implementan aplicaciones en un clúster de Kubernetes, las direcciones IP se configuran para los pods y servicios de Kubernetes como puntos de conexión en este equilibrador de carga.

Recursos de dirección IP

Para simplificar la configuración de red de las cargas de trabajo de aplicación, AKS Arc asigna direcciones IP a los siguientes objetos en una implementación:

  • Servidor de API de clúster de Kubernetes: el servidor de API es un componente del plano de control de Kubernetes que expone la API de Kubernetes. El servidor de API es el front-end del plano de control de Kubernetes. A los servidores de API siempre se les asignan direcciones IP estáticas, independientemente del modelo de redes subyacente.
  • Nodos de Kubernetes (máquinas virtuales): un clúster de Kubernetes consta de un conjunto de máquinas de trabajo, denominadas nodos, y los nodos hospedan aplicaciones contenedorizadas. Además de los nodos del plano de control, cada clúster tiene al menos un nodo de trabajo. En el caso de un clúster de AKS, los nodos de Kubernetes se configuran como máquinas virtuales. Estas se crean como máquinas virtuales de alta disponibilidad en Azure Stack HCI; para obtener más información, consulte Conceptos de redes de nodo.
  • Servicios de Kubernetes: en Kubernetes, los servicios agrupan lógicamente las direcciones IP de pod para permitir el acceso directo a través de una sola dirección IP o un nombre DNS en un puerto específico. Los servicios también pueden distribuir el tráfico mediante un equilibrador de carga. A los servicios de Kubernetes siempre se les asignan direcciones IP estáticas, independientemente del modelo de redes subyacente.
  • Equilibradores de carga HAProxy: HAProxy es un equilibrador de carga TCP/HTTP y un servidor proxy que distribuye las solicitudes entrantes entre varios puntos de conexión. Cada clúster de cargas de trabajo de una implementación de AKS en Azure Stack HCI tiene un equilibrador de carga haProxy implementado y configurado como una máquina virtual especializada.
  • Servicio en la nube local de Microsoft: este es el proveedor de nube de Azure Stack HCI que permite la creación y administración del entorno virtualizado que hospeda Kubernetes en un clúster de Azure Stack HCI local o un clúster de Windows Server. El modelo de red seguido por el clúster de Azure Stack HCI o Windows Server determina el método de asignación de direcciones IP que usa el servicio en la nube local de Microsoft. Para más información sobre los conceptos de red implementados por el servicio Microsoft On-premises Cloud, consulte Conceptos de redes de nodo.

Redes de Kubernetes

En AKS en Azure Stack HCI, puede implementar un clúster que use uno de los siguientes modelos de red:

  • Red de superposición de Flannel: Los recursos de la red normalmente se crean y se configuran cuando se implementa el clúster.
  • Redes de Project Calico: Este modelo ofrece características de red adicionales, como las directivas de red y el control de flujo.

Ambas implementaciones de red usan un modelo de configuración de red de superposición, que proporciona una asignación de direcciones IP que está desconectada del resto de las redes del centro de datos.

Para obtener más información sobre las redes de superposición, consulte Introducción: Redes de superposición de Kubernetes para Windows.

Para obtener más información sobre las directivas y el complemento de red de Calico, consulte la introducción a la directiva de red de Calico.

Comparación de los modelos de red

Flannel

Flannel es una capa de red virtual diseñada específicamente para contenedores. Flannel crea una red plana que se superpone a la red del host. A todos los contenedores y pods se les asigna una dirección IP en esta red de superposición, y se comunican directamente mediante la conexión de las direcciones IP entre sí.

Calico

Calico es una solución de redes y seguridad de red de código abierto para contenedores, máquinas virtuales y cargas de trabajo basadas en host nativas. Calico admite varios planos de datos, entre los que se incluyen: un plano de datos eBPF de Linux, un plano de datos de red de Linux y un plano de datos HNS de Windows.

Funcionalidades

Capacidad Flannel Calico
Directivas de red No
IPv6 No
Capas usadas L2 (VxLAN) L2 (VxLAN)
Implementación del clúster en la red virtual existente o en una nueva
Compatibilidad con Windows
Conexión de pod a pod
Conexión de pod a VM, VM en la misma red No
Conexión de pod a VM, VM en otra red
Servicios de Kubernetes
Exposición a través de equilibrador de carga
Redes Muchas redes en el mismo clúster con varios demonios Muchas redes en el mismo clúster
Implementación Linux: DaemonSet Linux: DaemonSet
Windows: servicio Windows: servicio
Línea de comandos ninguno calicoctl

Importante

Actualmente, la selección predeterminada es usar Calico en modo de red de superposición. Para habilitar Flannel, use el -primaryNetworkPlugin parámetro del New-AksHciCluster comando de PowerShell y especifique flannel como valor. Este valor no se puede cambiar después de implementar el clúster y se aplica a los nodos de clúster de Windows y Linux.

Este es un ejemplo:

New-AksHciCluster -name MyCluster -primaryNetworkPlugin 'flannel'

Pasos siguientes

En este artículo se describen los conceptos de red para contenedores en nodos de AKS en Azure Stack HCI. Para obtener más información sobre los conceptos de AKS en Azure Stack HCI, consulte los siguientes artículos: