EN ESTA PÁGINA
Configuración válida 1: una subinterface principal, una subinterface:
Configuración válida 2: un solo elemento principal, varias subinterfaces:
Configuración válida 3: varios padres, varias subinterfaces:
Configuración 1 no válida: varias interfaces en la misma red:
Configuración 2 no válida: dos interfaces con la misma
interfacegroup
pero sin VLAN
Habilite la compatibilidad con subinterfaces de VLAN en interfaces virtuales
RESUMEN Las cargas de trabajo de la función de red virtualizada (VNF) y la función de red en contenedores (CNF) a menudo requieren varios servicios de red virtual en una sola interfaz. Cloud-Native Contrail® Networking™ admite subinterfaces VLAN en interfaces virtuales.
Descripción general de subinterface VLAN
Una subinterface VLAN es una división lógica de una interfaz virtual (o física) a nivel de red. Las subinterfaces de VLAN son interfaces de capa 3 que reciben y reenvía etiquetas VLAN 802.1Q. Puede asignar varias etiquetas VLAN a una sola interfaz virtual. Cuando un paquete llega a esa interfaz, las etiquetas VLAN asociadas del paquete designan a qué VLAN enruta el paquete. Puede usar subinterfaces de VLAN para enrutar tráfico a varias VLAN para sus servicios.
Cambios de API
En esta sección, se proporciona información acerca de las llamadas a la API que se producen al configurar una subinterface VLAN.
Al configurar subinterfaces de VLAN en Cloud-Native Contrail Networking, Kubernetes actualiza el VirtualMachineInterface
campo con nuevas properties
etiquetas O VLAN. Después de que se produzca una actualización, el VirtualMachineInterface
objeto hace referencia a otros VirtualMachineInterface
objetos basados en etiquetas VLAN existentes.
Cloud-Native Contrail Networking define el properties
campo de Contrail Classic como virtualMachineInterfaceProperties
.
Cambios en la definición de red
En esta sección, se proporciona información sobre las mejoras de definición de red necesarias al crear una subinterface para una interfaz virtual dentro de un pod.
En kube-manager
, la PodController
visualización de eventos de pod lee la definición de red que se le aplica. Kube-manager
Analiza cada elemento de selección de red y crea una VMI asociada (interfaz de máquina virtual). Las VMIs principales son los elementos de red con solo la net.juniper.contrail.interfacegroup
etiqueta adjunta en el archivo YAML. Las subinterfaces son los elementos de red con las net.juniper.contrail.interfacegroup
etiquetas adjuntas net.juniper.contrail.vlan
en el archivo YAML.
Las dos etiquetas siguientes mejoran la definición de red en la cni-args
sección:
-
net.juniper.contrail.interfacegroup
-
El grupo de interfaz agrupa dos o más interfaces.
-
La interfaz principal es el elemento de selección de red asociado solo con esta etiqueta.
-
La subinterface es el elemento de selección de red asociado con esta etiqueta y una etiqueta VLAN.
-
net.juniper.contrail.vlan
-
Especifica el VLANID en la subinterface.
-
Una subinterface VLAN pertenece a su interfaz principal. Los usuarios deben especificar el espacio de nombres al que se adjunta la subinterface. Considere el siguiente ejemplo:
Ejemplo 1
apiVersion: v1 kind: Pod metadata: name: my-pod namespace: my-namespace annotations: k8s.v1.cni.cncf.io/networks: | [ { "name": "parent-vn", "namespace": "vn-ns", "cni-args": { "net.juniper.contrail.interfacegroup": "eth1"} ... }, { "name": "subitf-vn", "namespace": "vn-ns", "cni-args": { "net.juniper.contrail.vlan": 100, "net.juniper.contrail.interfacegroup": "eth1"}, ... }, ...
En el ejemplo 1, se muestran las anotaciones de pod especificadas para cni-args
. En esta configuración de ejemplo, se crean las tres VMIs y tres IIP (IP de interfaz) siguientes dentro del pod:
-
VMI, IIP para eth0 en red pod predeterminada
-
VMI, IIP para eth1 en
parent-vn
(interfaz principal) -
VMI, IIP para eth1.100 en
subitf-vn
(subinterface)
Casos de uso de configuración
En esta sección, se proporcionan ejemplos de diferentes configuraciones de padres y subinterfaces válidas e no válidas.
Configuraciones válidas
Configuración válida 1: una subinterface principal, una subinterface:
Configuración válida 2: un solo elemento principal, varias subinterfaces:
Configuración válida 3: varios padres, varias subinterfaces:
Configuraciones no válidas
Configuración 1 no válida: varias interfaces en la misma red:
Configuración 2 no válida: dos interfaces con el mismo grupo de interfaces, pero sin VLAN
Configuración válida 1: una subinterface principal, una subinterface:
apiVersion: v1 kind: Pod metadata: name: vlan100-0 namespace: vlan-project annotations: k8s.v1.cni.cncf.io/networks: | [ { "name": "vlan-parent-vn", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.interfacegroup": "eth1" } }, { "name": "vlan-subintf-vn", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.vlan": "100", "net.juniper.contrail.interfacegroup": "eth1" } }, ...
Configuración válida 2: un solo elemento principal, varias subinterfaces:
apiVersion: v1 kind: Pod metadata: name: vlan100-0 namespace: vlan-project annotations: k8s.v1.cni.cncf.io/networks: | [ { "name": "vlan-parent-vn", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.interfacegroup": "eth1" } }, { "name": "vlan-subintf-vn2", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.vlan": "200", "net.juniper.contrail.interfacegroup": "eth1" } }, { "name": "vlan-subintf-vn", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.vlan": "100", "net.juniper.contrail.interfacegroup": "eth1" } } ]
Configuración válida 3: varios padres, varias subinterfaces:
apiVersion: v1 kind: Pod metadata: name: vlan100-0 namespace: vlan-project annotations: k8s.v1.cni.cncf.io/networks: | [ { "name": "vlan-parent-vn", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.interfacegroup": "eth1" } }, { "name": "vlan-subintf-vn2", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.vlan": "200", "net.juniper.contrail.interfacegroup": "eth1" } }, { "name": "vlan-subintf-vn", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.vlan": "100", "net.juniper.contrail.interfacegroup": "eth1" } }, { "name": "vlan-subintf-vn4", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.vlan": "100", "net.juniper.contrail.interfacegroup": "eth2" } }, { "name": "vlan-subintf-vn3", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.interfacegroup": "eth2" } } ]
Configuración 1 no válida: varias interfaces en la misma red:
apiVersion: v1 kind: Pod metadata: name: vlan100-0 namespace: vlan-project annotations: k8s.v1.cni.cncf.io/networks: | [ { "name": "vn1", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.interfacegroup": "eth1" } }, { "name": "vn1", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.vlan": "200", "net.juniper.contrail.interfacegroup": "eth1" } }, ]
Configuración 2 no válida: dos interfaces con la misma interfacegroup
pero sin VLAN
apiVersion: v1 kind: Pod metadata: name: vlan100-0 namespace: vlan-project annotations: k8s.v1.cni.cncf.io/networks: | [ { "name": "vn1", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.interfacegroup": "eth1" } }, { "name": "vn2", "namespace": "vlan-project", "cni-args": { "net.juniper.contrail.interfacegroup": "eth1" } }, ]