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. También es posible que tenga que restringir el flujo de tráfico de red hacia o entre pods y nodos para la seguridad.
En este artículo se presentan los conceptos básicos que proporcionan redes a las aplicaciones en AKS habilitadas 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.
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.
LoadBalancer: crea un recurso de Azure Load Balancer, 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.
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 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 puerto 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.
Conceptos básicos de red de Kubernetes en Azure Local
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 Local de Azure también ayuda a simplificar las redes virtuales para AKS en clústeres locales de Azure proporcionando la red de "superposición" de una manera de 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 para cargas de trabajo de aplicaciones, AKS Arc asigna direcciones IP a los siguientes objetos de 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. Para un clúster de AKS, los nodos de Kubernetes se configuran como máquinas virtuales. Estas máquinas virtuales se crean como máquinas virtuales de alta disponibilidad en Azure Local para más información, consulte Conceptos de redes de node.
- 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 Local 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 local de Azure que permite la creación y administración del entorno virtualizado que hospeda Kubernetes en un clúster local de Azure Local o un clúster de Windows Server. El modelo de red seguido del clúster de Azure Local 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 Local, 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
Nota:
Flannel CNI se retiró en diciembre de 2023.
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
Funcionalidad | Flannel | Calico |
---|---|---|
Directivas de red | No | Sí |
IPv6 | No | Sí |
Capas usadas | L2 (VxLAN) | L2 (VxLAN) |
Implementación del clúster en la red virtual existente o en una nueva | Sí | Sí |
Compatibilidad con Windows | Sí | Sí |
Conexión de pod a pod | Sí | Sí |
Conexión de pod a VM, VM en la misma red | No | Sí |
Conexión de pod a VM, VM en otra red | Sí | Sí |
Servicios de Kubernetes | Sí | Sí |
Exposición a través de equilibrador de carga | Sí | Sí |
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 | None | 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 comando de New-AksHciCluster
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.
Por ejemplo:
New-AksHciCluster -name MyCluster -primaryNetworkPlugin 'flannel'
Pasos siguientes
En este artículo se describen los conceptos de red para los contenedores de los nodos de AKS en Azure Local. Para más información sobre los conceptos de AKS en Azure Local, consulte los siguientes artículos: