Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

Contrail como CNI

 

En la tecnología contenedora, un par Veth (virtual Ethernet) funciona de manera muy similar a un cable virtual que se puede usar para crear túneles entre espacios de nombres de red. Un extremo de él está enchufado en el contenedor y el otro extremo se encuentra en el espacio de nombres de puente de host o de Docker.

Un complemento de Contrail CNI es responsable de insertar la interfaz de red (es un extremo del par Veth) en el espacio de nombres de la red contenedora, y también realizará todos los cambios necesarios en el host, como conectar el otro extremo de la Veth a un puente, asignar IP, configurar rutas, etc.

Existen muchas implementaciones del complemento de CNI que están disponibles públicamente en la actualidad. Contrail es uno de ellos y es nuestro favorito. Para obtener una comprobación de lista completa https://github.com/containernetworking/CNI.

Figure 1: El contenedor y el par Veth
El contenedor y el par Veth

Otro complemento CNI, mult-CNI, le permite conectar varias interfaces de red a pods. La compatibilidad con varias redes de mult-CNI se realiza mediante la llamada múltiple a otros complementos de CNI. Dado que cada complemento creará su propia red, varios complementos permiten que el conjunto de redes cuente con varias. Una de las principales ventajas que ofrece Contrail, en comparación con mutus-CNI y todas las demás implementaciones actuales en la industria, es que Contrail proporciona la capacidad de conectar varias interfaces de red a un conjunto Pod Kubernetes por sí mismo, sin tener que llamar a ningún otro complemento. Esto ofrece compatibilidad con un conjunto pod de alojamiento múltiple.

Definición de datos adjuntos de red CRD

Contrail CNI sigue la definición de adjuntos de red Kubernetes CRD (definición de recursos personalizada) para proporcionar un método estándar para especificar las configuraciones para las interfaces de red adicionales. No hay ningún cambio en las API de Kubernetes upstream estándar, lo que hace que la implementación sea más incompatibilidades.

En Contrail, contrail-Kube-Manager crea la definición de adjunto de red (KM). Cuando se inicia, KM valida si se encuentra un network-attachment-definitions.k8s.cni.cncf.io de red CRD en el servidor de API Kubernetes y crea uno si no es’así.

A continuación se muestra un archivo de YAML de objeto CRD:

En el programa de instalación de Contrail Kubernetes, se ha creado el CRD y se puede comprobar:

Usando este nuevo tipo de definición de red-adjunto creada a partir del CRD anterior, ahora tenemos la capacidad de crear una red virtual en Contrail entornos Kubernetes.

Para crear una red virtual a partir de Kubernetes, utilice una plantilla YAML como la siguiente:

Al igual que otros muchos objetos Kubernetes estándar, se especifica el nombre de la red virtual, el espacio de nombres en metadatos y las anotaciones que se utilizan para transportar información adicional sobre una red. En Contrail, las anotaciones siguientes se usan en el CRD NetworkAttachmentDefinition para habilitar ciertos atributos para la red virtual:

  • opencontrail.org/cidr: Este CIDR define la subred de una red virtual.

  • opencontrail.org/ip_fabric_forwarding: Este marcador es activar/desactivar la característica de enrutamiento de la estructura IP.

  • opencontrail.org/ip_fabric_snat: Este es un indicador para activar/desactivar la característica IP fabric SNAT.

En Contrail, la característica de reenvío de la estructura de IP permite el reenvío basado en estructuras IP sin túnel para la red virtual. Cuando dos ip_fabric_forwrding habilitado las redes virtuales se comunican entre sí, el tráfico de superposición se reenviará directamente mediante el subyacente.

Con la característica Contrail IP-fabric-SNAT, los pods que se encuentran en la capa superpuestas pueden llegar a Internet sin un enrutador IPs flotante o lógico. La característica IP-fabric-SNAT utiliza Compute node IP para crear un TDR de código fuente con el fin de alcanzar los servicios necesarios.

Tenga en cuenta que en este libro no se abordan las características de reenvío de la estructura IP y de la estructura SNAT de IP.

O bien, puede definir una nueva red virtual haciendo referencia a una red virtual existente:

En este libro, usamos la primera plantilla para definir nuestras redes virtuales en todos los ejemplos.