Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Crear un espacio de nombres aislado

RESUMEN  En este tema, se muestra cómo crear un espacio de nombres aislado en Juniper Cloud-Native Contrail® Networking™ (CN2). Juniper Networks admite espacios de nombres aislados mediante la versión 22.1 o posterior de Contrail Networking en un entorno orquestado por Kubernetes.

Descripción general del espacio de nombres

Nota:

En este documento, usamos el término "aislado" y "no aislado" solo en el contexto de Contrail networking.

Espacios de nombres no aislados

Los espacios de nombres, también denominados espacios de nombres no aislados, proporcionan un mecanismo para aislar un grupo de recursos dentro de un solo clúster. De forma predeterminada, los espacios de nombres no se aíslan.

Los espacios de nombres no aislados están diseñados para su uso en entornos con muchos usuarios distribuidos en varios equipos o proyectos. Los espacios de nombres no aislados permiten que cada equipo exista en su propio clúster virtual sin que los miembros del equipo afecten el trabajo de los demás. Supongamos que creó todos los recursos en el espacio de nombres predeterminado que proporciona Kubernetes. Si tiene una aplicación compleja con varias implementaciones, el espacio de nombres predeterminado puede ser difícil de mantener. Una forma más fácil de administrar esta implementación es agrupar todos los recursos en diferentes espacios de nombres dentro del clúster. Por ejemplo, el clúster puede contener espacios de nombres independientes, como un espacio de nombres de base de datos o una base de datos de supervisión. Los nombres de recursos deben ser únicos dentro de un espacio de nombres, pero puede repetir nombres de recursos en espacios de nombres.

Los pods en un espacio de nombres no aislado muestran el siguiente comportamiento de red:

  • Pueden comunicarse con otros grupos del clúster sin usar TDR.

  • Comparten lo mismo default-podnetwork y default-servicenetwork.

Espacios de nombres aislados.

Un espacio de nombres aislado le permite ejecutar aplicaciones específicas del cliente que desea mantener privadas. Puede crear un espacio de nombres aislado para aislar un pod de otros pod, sin configurar explícitamente una política de red.

Los espacios de nombres aislados son similares a los espacios de nombres no aislados, con la excepción de que cada espacio de nombres aislado tiene su propia red pod y red de servicios. Esto significa que los pods en espacios de nombres aislados no pueden llegar a los pods o servicios en otros espacios de nombres aislados o no aislados.

Los pods en espacios de nombres aislados solo pueden comunicarse con pods en el mismo espacio de nombres. La única excepción es cuando un pod en un espacio de nombres aislado necesita acceso a un servicio de Kubernetes, como DNS de núcleo. En este caso, el pod usa los clústeres default-servicenetwork para tener acceso a los servicios.

Los pods en un espacio de nombres aislado exhiben el siguiente comportamiento de red:

  • Solo pueden comunicarse con pods en el mismo espacio de nombres.

  • Pueden comunicarse con los servicios en espacios de nombres no aislados.

  • Sus direcciones IP y direcciones IP de servicio se asignan desde la misma subred que el pod y la subred de servicio del clúster.

  • Pueden acceder a la red subyacente, o red de estructura IP, a través del reenvío de estructura IP y TDR de origen de estructura.

Nota: No puede convertir un espacio de nombres no aislado en un espacio de nombres aislado o viceversa.

Ejemplo: Configuración de espacio de nombres aislado

Esta configuración de ejemplo muestra una configuración de espacio de nombres aislado en Cloud-Native Contrail Networking (CN2).

Figura 1: Configuración Isolated Namespace Configuration de espacio de nombres aislado

En la configuración de espacio de nombres aislado anterior:

  • Pod-1 (no aislado-1) se encuentra en un espacio de nombres no aislado creado por el usuario.

  • Pod-2 (kube-system) y Pod-3 (contrail) se encuentran en espacios de nombres no aislados creados por el controlador.

  • Pod-4 (aislado-1) y Pod-5 (aislado-2) se encuentran en espacios de nombres aislados creados por el usuario.

  • Las interfaces para Pod-1, Pod-2 y Pod-3 se crean a partir de los clústeres default-podnetwork y default-servicenetwork.

  • Las interfaces para Pod-4 y Pod-5 se crean en los espacios de default-podnetwork nombres aislados y default-servicenetwork en sus propios espacios de nombres aislados. Ambas interfaces Pod-4 y Pod-5 comparten la misma subred que las del clúster default-podnetwork y default-servicenetwork.

  • Los pods en espacios de nombres aislados no pueden comunicarse con pods en espacios de nombres no aislados. En este ejemplo, Pod-4 y Pod-5 en espacios de nombres aislados no pueden comunicarse con Pod-1, Pod-2 o Pod-3 en espacios de nombres no aislados.

  • Los pods en espacios de nombres aislados (Pod-4 y Pod 5) pueden acceder a cualquier servicio a través de default-servicenetworklos .

  • Los pods de todos los espacios de nombre (no aislados y aislados) se pueden conectar a la estructura a través de la .ip-fabric-network

Notas

  • Los espacios de nombres aislados afectan solo a la interfaz predeterminada del pod. Esto se debe a que la interfaz predeterminada de los pods en un espacio de nombres aislado se crean en el default-podnetwork del espacio de nombres aislado. Sin embargo, las interfaces definidas por VirtualNetworks el usuario se comportan de la misma manera en espacios de nombres aislados y no aislados.

  • Puede crear políticas de red en espacios de nombres aislados para ajustar el aislamiento de los pods. La política de red se comporta igual para los espacios de nombres aislados y no aislados.

  • Se pueden interconectar dos o más espacios de nombres aislados a través del VirtualNetworkRouter (VNR).

Este es un ejemplo de una VirtualNetworkRouter configuración (VNR) usada para interconectar dos default-podnetworks espacios de nombres aislados (ns-isolated-1 y ns-isolated-2). En esta configuración, se VirtualNetworkRouter conecta a ns-aislado-1 y ns-aislado-2. Esto significa que los pods de estos espacios de nombres aislados pueden comunicarse entre sí.

Objetos de espacio de nombres aislados

Esta tabla describe los objetos de espacio de nombres (recursos de API) que el controlador crea al crear un espacio de nombres aislado.

Tabla 1: Objetos de espacio de nombres aislados
Descripción de objeto del espacio de nombres aislado
default-podnetwork (VirtualNetwork) Las interfaces predeterminadas de los pods en un espacio de nombres aislado se crean en esto default-podnetwork en lugar de la red predeterminada del clúster.
default-servicenetwork (VirtualNetwork) La IP del clúster de los servicios en espacios de nombres aislados se crean en esto default-servicenetwork en lugar de la del default-servicenetworkclúster.
IsolatedNamespacePodServiceNetwork (VirtualNetworkRouter) Este objeto establece la conectividad entre los espacios de nombres default-podnetwork aislados y default-servicenetwork.
IsolatedNamespaceIPFabricNetwork (VirtualNetworkRouter) Este objeto establece la conectividad entre el espacio de nombres default-podnetwork aislado y default-servicenetwork el .ip-fabricnetwork
IsolatedNamespacePodToDefaultService (VirtualNetworkRouter) Este objeto establece la conectividad entre los espacios de nombres default-podnetwork aislados con el .default-servicenetwork

Crear un espacio de nombres aislado

Siga estos pasos para crear un espacio de nombres aislado:

  1. Cree un archivo YAML llamado ns-isolated.yml.
  2. Agregue la etiqueta core.juniper.net/isolated-namespace a los metadatos del espacio de nombres y establezca la variable en "true".
  3. Emita el kubectl apply comando para aplicar la configuración.
  4. Para comprobar su configuración, emita el kubectl get ns ns-isolated -o yaml comando.

    ¡Éxito! Ha creado un espacio de nombres aislado.

Configuración opcional: Reenvío de estructura IP y TDR de origen de estructura

Opcionalmente, puede habilitar el reenvío de estructura IP y TDR de origen de estructura en un espacio de nombres aislado.

El reenvío de estructura IP permite crear redes virtuales como parte de la red subyacente y elimina la necesidad de encapsulación y desencapsulación de datos. El TDR de origen de la estructura permite que los pods de la superposición lleguen a Internet sin ip flotantes o un sistema lógico.

Cuando se crea un espacio de nombres aislado, se crean dos redes virtuales, una default-podnetwork y una default-servicenetwork. De forma predeterminada, el reenvío de estructura IP y el TDR de origen de estructura en estas dos redes virtuales están deshabilitados. Puede habilitar el reenvío de estructura IP o TDR de origen de estructura en las redes virtuales mediante la adición de anotaciones de "modo de reenvío" para cada función en su archivo YAML de espacio de nombres aislado.

Este es un ejemplo de un default-podnetwork espacio de nombres aislado con modo de reenvío establecido en fabricSNAT.

Habilitar el reenvío de estructura IP

Siga estos pasos para habilitar el reenvío de estructura IP en un espacio de nombres aislado:

  1. Agregue la anotación core.juniper.net/forwarding-mode: "ip-fabric" a los metadatos del espacio de nombres.
  2. Establezca la etiqueta para el espacio de nombres aislado en "true".
  3. Emita el kubectl apply comando para habilitar el reenvío de estructura IP.
  4. Verifique su configuración.

    ¡Éxito! Habilitó el reenvío de estructura IP en el espacio de nombres aislado.

Habilitar TDR de origen de estructura

Nota:

Solo puede habilitar TDR de origen de estructura en la .default-podnetwork

Siga estos pasos para habilitar TDR de origen de estructura en un espacio de nombres aislado:

  1. Agregue la anotación core.juniper.net/forwarding-mode: "fabric-snat" a los metadatos del espacio de nombres.
  2. Establezca la etiqueta para el espacio de nombres aislado en "true".
  3. Emita el kubectl apply comando para habilitar TDR de origen de estructura.
  4. Verifique su configuración.
    ¡Éxito! Habilitó TDR de origen de estructura en el espacio de nombres aislado.