Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

Contrail de IP flotante

 

La comunicación se ha comentado y probado entre pods en el mismo espacio de nombres o en otro diferente’, pero en la medida en que el mismo se encuentra dentro del mismo cluster. ¿Qué ocurre con la comunicación con dispositivos fuera del clúster?

Es posible que ya sepa que en el entorno de Contrail tradicional (OpenStack), hay muchas maneras de que las entidades superpuestas (normalmente una máquina virtual) tengan acceso a Internet. Los tres métodos más frecuentes son:

  • IP flotante

  • Fabric SNAT

  • Enrutador lógico

La solución preferida para Kubernetes es exponer cualquier servicio por medio de service y Ingress objetos, de los’que puede leer en el capítulo 3. En el entorno Contrail Kubernetes, la dirección IP flotante se utiliza en la implementación del servicio y de la entrada para exponerlas en lo’que s se encuentra fuera del clúster. Posteriormente, en este capítulo se explica cada uno de estos dos objetos. Pero primero, vamos’a revisar la base de la dirección IP flotante y veremos cómo funciona con Kubernetes.

Note

El servicio fabric SNAT y logical router son utilizados por las cargas de trabajo superpuestas (VM y Pod) para conectarse a Internet, pero no es posible inicializar la comunicación desde la dirección contraria. Sin floating IP admite el tráfico inicializado desde ambas – direcciones puede configurarlo para que admita tráfico de entrada, el tráfico de salida o ambos, y el valor predeterminado es bidireccional. Este libro se centra únicamente en floating Investigación. Consulte Contrail documentación para obtener información detallada acerca de la estructura SNAT y el enrutador lógico: https://www.juniper.net/ documentation/en_US/contrail5.0/information-products/pathway-pages/contrail-feature-guide-pwp.html.

IP flotante y grupo de direcciones IP flotantes

El servicio floating IP o FIP, es un concepto tradicional de que Contrail ha aceptado desde sus primeras versiones. Esencialmente,’es un concepto OpenStack para asignar una IP de VM, que normalmente es una dirección IP privada, a una IP pública (la IP flotante en este contexto) a la que se puede tener acceso desde el exterior del clúster. A nivel interno, TDR implementa la asignación uno a uno. Siempre que un vRouter reciba paquetes del exterior del clúster destinados a la dirección IP flotante, lo traducirá a la dirección’IP privada de VM s y lo reenviará a la máquina virtual. De manera similar, la traducción se realizará en dirección contraria. Finalmente, tanto la VM como el host de Internet pueden comunicarse entre sí y ambos pueden iniciar la comunicación.

Note

VRouter es un plano de reenvío Contrail que reside en cada nodo de cálculo que controla el tráfico de la carga de trabajo.

La Figure 1 ilustra el flujo de trabajo básico de la IP flotante.

Figure 1: Flujo de trabajo de IP flotante
Flujo de trabajo de IP flotante

A continuación, se muestran algunos aspectos destacados relacionados con la dirección IP flotante que deben tenerse en cuenta:

  • Una IP flotante está asociada con una VM’s porto una VMI (interfaz de máquina virtual).

  • Una dirección IP flotante se asigna a partir de una FIP pool.

  • Se crea un grupo de direcciones IP flotantes basado en una red virtual (FIP-VN).

  • El FIP-VN estará disponible para fuera del clúster al establecer la coincidencia con route-target (RT) atributos del enrutador’de puerta de enlace de la tabla VRF.

  • Cuando un enrutador de puerta de enlace ve una coincidencia con su Directiva de importación de rutas en RT, cargará la ruta en su tabla VRF. Todos los clientes remotos conectados a la tabla VRF podrán comunicarse con la dirección IP flotante.

No hay nada nuevo en el entorno Contrail Kubernetes en relación con el concepto y la función de IP flotante. Pero el uso de IP flotante se ha ampliado en Kubernetes service y ingress implementación de objetos y desempeña una función importante para obtener acceso a Kubernetes service y ingress externamente. Puede consultar las secciones posteriores de este capítulo para obtener más detalles.

Crear agrupación FIP

’Cree un grupo de direcciones IP flotantes en un proceso de tres pasos:

  1. Cree una dirección IP-VN pública y flotante.

  2. Establece RT (destino de enrutamiento) para la red virtual de modo que se pueda anunciar e importar en la tabla VRF’del enrutador de puerta de enlace.

  3. Cree un grupo de direcciones IP flotante basado en la red virtual IP-variable pública.

De nuevo, no hay nada nuevo aquí. Se requerirían los mismos pasos en otros entornos de Contrail sin Kubernetes. Sin embargo, como’aprendió en las secciones anteriores, con contrail integración con Kubernetes se puede crear una red virtual IP flotante en Kubernetes estilo.

Cree una red virtual IP pública flotante llamada vn-NS-predeterminado

A continuación, establezca el destino de enrutamiento.

Si necesita que la dirección IP flotante sea accesible desde Internet a través del enrutador de puerta’de enlace, ll debe establecer un destino de ruta para el prefijo de red virtual que’se va a importar en la tabla VRF de enrutadores de puerta de enlace (consulte la Figure 2). Este paso es necesario siempre que sea necesario tener acceso a Internet.

La ruta de navegación de la interfaz de usuario para establecer RT es: Contrail comando > menú principal > superpuesto > redes virtuales > K8S-vn-NS-default-Pod-Network > Edit > enrutamiento, puentes y políticas.

Figure 2: Comando de Contrail: Establecer RT
Comando de Contrail: Establecer RT

Ahora vamos’a crear un grupo de direcciones IP flotante basado en la red virtual pública.

Este es el último paso. Desde la interfaz de usuario del comando Contrail, cree un grupo de direcciones IP flotante basado en la red virtual pública. La ruta de navegación de la interfaz de usuario para esta configuración mostrada en la Figure 3 es: Contrail comando > > menú principal superpuesto > IP flotante > crear.

Tip

La interfaz de usuario de Contrail también le permite establecer el indicador externo en opciones avanzadas de red virtual, de modo que se creará automáticamente un grupo de direcciones IP flotante llamado público .

Figure 3: Comando de Contrail: Crear un grupo de direcciones IP flotantes
Comando de Contrail: Crear un grupo de direcciones IP flotantes

Ámbito de grupo de IP flotante

Existen distintas formas de hacer referencia a un grupo de direcciones IP flotantes en el entorno Contrail Kubernetes y, en su caso, el alcance de los grupos también será diferente. Los tres niveles posibles con prioridad descendente son:

  • Específico del objeto

  • Nivel de espacio de nombres

  • Nivel global

Específico del objeto

Este es el nivel de ámbito más específico. Un grupo de IP flotante específico de objeto solo se enlaza al objeto que se especificó, lo que no afecta a ningún otro objeto del mismo espacio de nombres o clúster. Por ejemplo, puede especificar un objeto de servicio web para obtener la dirección IP flotante del grupo de direcciones IP flotantes pool1, un objeto de servicio dns para obtener la dirección IP flotante de otro grupo de direcciones IP flotantes pool2etc. Esto proporciona el control más granular del lugar desde el que se asignará la dirección IP flotante – para un objeto el costo es que es necesario especificarla explícitamente en el archivo YAML para cada objeto.

Nivel de espacio de nombres

En un entorno de varios inquilinos, cada espacio de nombres se asociaría con un inquilino y cada inquilino tendría un grupo de direcciones IP flotante dedicado. En ese caso, es mejor tener una opción para definir un grupo de direcciones IP flotante a nivel NS, de modo que todos los objetos creados en ese espacio de nombres obtengan una asignación de IP flotante de ese grupo. Con el grupo de nivel de espacio de nombres definido (por ejemplo, pool-ns-default), ya no hay necesidad de especificar un nombre de grupo de direcciones IP flotante en’cada archivo de YAML de objetos. Puede seguir asignando un nombre de agrupación diferente, por ejemplo my-webservice-pool de un objeto webservice. En ese caso, WebService de objeto obtendrá la IP flotante de my-webservice-pool en lugar de hacerlo desde el grupo de nivel de espacio de nombres pool-ns-default, ya que las primeras son más específicas.

Nivel global

El ámbito del grupo de nivel global sería todo el clúster. Los objetos de cualquier espacio de nombres pueden usar el conjunto global de direcciones IP flotante.

Puede combinar los tres métodos para aprovechar su flexibilidad combinada. Este’es un ejemplo práctico:

  • Definir un grupo global pool-global-default, por lo que cualquier objeto de un espacio de nombres que no tenga definido un grupo de nivel de espacio de nombres o el OB, obtendrá una dirección IP flotante de este grupo.

  • Para NS dev, defina un grupo de direcciones IP flotante pool-dev, por lo que todos los objetos creados en NS dev obtendrá de forma predeterminada la dirección IP flotante de pool-dev.

  • Para NS sales, defina un grupo de direcciones IP flotante pool-sales, por lo que todos los objetos creados en NS sales obtendrá de forma predeterminada la dirección IP flotante de pool-sales .

  • Para NS test-only, no defina ningún grupo de nivel de espacio de nombres, de modo que, de forma predeterminada, los objetos creados en él obtendrán una dirección IP flotante a partir del pool-global-default.

  • Cuando un servicio dev-webservice en el desarrollo de NS, se necesita una IP flotante de pool-sales en lugar de pool-dev, especificando pool-sales en dev-webservice el archivo YAML del objeto conseguirá este objetivo.

Note

Tenga en cuenta que la regla de pulgar – siempre prevalecerá sobre el ámbito más específico.

Grupo de IP flotante de objetos

’En primer lugar, echemos un vistazo al grupo de direcciones IP flotante específico del objeto:

En este ejemplo, Service service-web-lb-pool-public-1 Obtendrá una dirección IP flotante del grupo pool-public-1, que se crea en función de la red virtual vn-public-1 en proyecto actual k8s-ns-user-1. El espacio de nombres Kubernetes correspondiente es ns-user-1. Dado que el grupo de direcciones IP flotantes de objetos solo se asigna a este objeto específico, cada nuevo objeto debe asignarse explícitamente a este método a un grupo de direcciones IP flotante.

Agrupación de IP flotante de NS

El siguiente ámbito de grupo de direcciones IP flotante se encuentra en el nivel de espacio de nombres. Cada espacio de nombres puede definir su propio grupo de direcciones IP flotante. De la misma manera que un objeto de anotaciones Kubernetes se utiliza para proporcionar una subred a una red virtual, también se utiliza para especificar un grupo de direcciones IP flotante. El archivo YAML tiene el siguiente aspecto:

Estas ns-user-1 se le da un grupo de direcciones IP flotantes de nivel de espacio de nombres denominado pool-ns-defaulty la red virtual correspondiente es vn-ns-default. Una vez que el ns-user-1 se crea con este archivo YAML, cualquier servicio nuevo que requiera una dirección IP flotante, si no se crea con el nombre de grupo específico del objeto en su archivo YAML, obtendrá una dirección IP flotante asignada desde este grupo. En la práctica, la mayoría de los espacios de nombres (especialmente los espacios de nombres aislados) necesitarán su propio grupo predeterminado de espacios de nombres, por lo que este tipo de configuración será muy frecuente en este campo.

Grupo global de direcciones IP flotante

Para especificar un grupo de IP flotante de nivel global, debe asignar el nombre completo del conjunto de la agrupación (domain > project > net- work > name), en contrail-kube-manager (KM) ’Archivo de configuración del acoplador (/etc/contrail/contrail-kubernetes.conf). El acoplador genera este archivo automáticamente durante su arranque basándose en sus parámetros de ENV, que puede encontrarse en el /etc/contrail/common_kubemanagearchivo r. env en el nodo maestro:

Como puede ver, este .env el archivo contiene parámetros de entorno importantes sobre la instalación. Para especificar una global FIP pool, agregue la siguiente línea:

KUBERNETES_PUBLIC_FIP_POOL={'domain': 'default-domain','name': 'pool-global-default','network': 'vn-global-default','project': 'k8s-ns-user-1'}

Se lee lo siguiente: se llama al grupo global de direcciones IP flotante pool-global-default y se define a partir de una red virtual vn-global-default en Project k8s-ns-user-1. Esto indica que el espacio de nombres Kubernetes correspondiente es ns-user-1.

Ahora con esa parte de la configuración colocada, puede volver a redactar la contrail-kube-manager Contenedor del acoplador para que el cambio surta efecto. Esencialmente, es necesario apagarlo y, a continuación, volver a ponerlo en marcha:

Ahora se especificó el grupo de direcciones IP flotante global para el clúster.

Note

En los tres ámbitos, la dirección IP flotante se asigna automáticamente y se asocia únicamente a los objetos servicio y ingreso. Si la dirección IP flotante tiene que asociarse a una caja Pod, debe hacerlo manualmente. En’la siguiente sección, hablaremos de esto.

IP flotante para pods

Una vez que se haya creado el grupo de IP flotante y esté disponible, se puede asignar una IP flotante del grupo de IP flotante para los pods que necesiten uno. Esto se puede hacer asociando una dirección IP flotante a una VMI (VM, o Pod, interfaz), puede crear manualmente una dirección IP flotante a partir de un grupo de direcciones IP flotantes en Contrail interfaz de usuario y, a continuación, asociarla con un conjunto Pod VMI, como en las Figure 4 y Figure 5

Figure 4: Crear dirección IP flotante
Crear dirección IP flotante
Figure 5: Asociar una dirección IP flotante en una interfaz Pod
Asociar una dirección IP flotante en una interfaz Pod
Note

Asegúrese de que el grupo de direcciones IP flotante se comparte con el proyecto donde se va a crear una dirección IP flotante.

IP flotante de publicidad

Una vez asociada una dirección IP flotante a una interfaz Pod, se anunciará al equipo del mismo nivel del BGP MP, que normalmente son enrutadores de puerta de enlace. En las figuras, Figure 6, Figure 7y Figure 8siguientes, se muestra cómo agregar y editar una par BGP.

Figure 6: Comando de Contrail: Seleccione el > del menú principal/infraestructura: Opciones avanzadas del > de clústeres
Comando de Contrail: Seleccione el > del menú principal/infraestructura: Opciones avanzadas del > de clústeres
Figure 7: Comando de Contrail: Seleccionar BGP enrutador > crear
Comando de Contrail: Seleccionar BGP enrutador > crear
Figure 8: Modificar BGP parámetros del mismo nivel
Modificar BGP parámetros del mismo nivel

Escriba toda la información de par BGP y’no olvide asociar los controladores, que se muestran a continuación en la Figure 9.

Figure 9: Asociar el interlocutor a un controlador
Asociar el interlocutor a un controlador

Desde la lista desplegable de peer bajo Associated Peers, seleccione los controladores a igual que el enrutador nuevo BGP que intenta agregar. Elija save Cuando haya terminado. Aparecerá un nuevo par BGP con el enrutador de tipo enrutador.

Figure 10: Un enrutador de BGP nuevo en la lista de enrutadores BGP
Un enrutador de BGP nuevo en la lista de enrutadores BGP

Ahora hemos’agregado un enrutador de BGP del mismo nivel como enrutador de tipo. En el caso del anunciador BGP local, que es de tipo nodo de control, solo es necesario comprobar los parámetros haciendo clic en el botón Editar. En esta prueba, queremos crear un vecino de IBGP MP entre el controlador de Contrail y el enrutador de puerta de enlace, por lo que asegúrese de que los campos ASN y familias de direcciones coincidan en ambos extremos, consulte la Figure 11.

Figure 11: Parámetros del controlador de Contrail BGP: NEGOCIOS
Parámetros del controlador de Contrail BGP: NEGOCIOS

Ahora puede comprobar BGP el estado de vecino en el enrutador de puerta de enlace:

Una vez establecido el vecino, se intercambiarán BGP rutas entre los dos altavoces, lo que es cuando vemos’que la dirección IP flotante asignada al objeto Kubernetes es anunciada por el nodo maestro (10.169.25.19) y aprendida en el enrutador de la puerta de enlace:

El servicio detail versión del mismo comando indica más: la ruta IP flotante se refleja en el Contrail con-Troller, pero Protocol next hop es el nodo Compute (10.169.25.20) indica que la dirección IP flotante está asignada a un nodo de cálculo. Una entidad que se ejecuta actualmente en ese nodo de cálculo es propietaria de la IP flotante:

La configuración de GRE suavizado dinámico hace que el enrutador de puerta de enlace cree automáticamente una interfaz de túnel GRE suave:

El servicio IP-Header indica un encabezado IP externo GRE, de modo que el túnel se crea a partir del enrutador de la puerta de enlace actual cuya dirección local BGP es 192.168.0.204, al nodo remoto 10.169.25.20, en este caso’, uno de los nodos contrail computacionales. El proceso de anuncios de IP flotante se ilustra en la Figure 12.

Figure 12: Anuncio de IP flotante
Anuncio de IP flotante