Gestión de interfaces de red virtuales para la virtualización OpenShift

Nube privada virtual 4.20 y más tarde Sólo nodos trabajadores de metal desnudo Sólo RHCOS OVN- Kubernetes Se requiere CNI

Puede utilizar interfaces de red virtuales (VNI) para habilitar la conectividad de red avanzada para máquinas virtuales (VM) que se ejecutan en clústeres Red Hat OpenShift on IBM Cloud con virtualización OpenShift.

Comprender las interfaces de red virtuales

Una interfaz de red virtual (VNI) es una abstracción de VPC de IBM Cloud que representa conexiones de red individuales. Las VNI incorporan propiedades de una conexión de red, como direcciones IP, direcciones MAC y la subred VPC a la que pertenecen.

Las VNIs sólo están disponibles en clusters con nodos trabajadores bare metal.

Red Hat OpenShift on IBM Cloud utiliza anexos de red basados en VNI para permitir una conectividad flexible entre las cargas de trabajo que se ejecutan en el clúster y fuera de él. Las VNIs permiten la exposición directa a la red de las máquinas virtuales (VMs) basadas en la Virtualización OpenShift a la red VPC mediante el uso de Redes Definidas por el Usuario (UDN) OVN con la topología Localnet. Con las VNI conectadas a nodos de trabajador de metal desnudo, las migraciones en vivo de máquinas virtuales pueden preservar las conexiones de red, ya que la VNI puede flotar implícitamente y seguir la carga de trabajo de VM entre instancias de trabajador de metal desnudo dentro de la misma zona.

Características clave

VNIs estáticas por nodo trabajador
Cuando se crea un clúster Red Hat OpenShift on IBM Cloud basado en bare metal o un nuevo grupo de trabajadores en IBM Cloud VPC, se crean automáticamente dos VNI y se adjuntan estáticamente a cada nodo trabajador bare metal. Una VNI gestiona el tráfico normal de los trabajadores (red de pods, UDNs superpuestas y comunicación maestra). La segunda VNI actúa como portadora de los anexos VNI dinámicos que usted gestiona.
Anexos VNI dinámicos
Puede crear y gestionar VNIs bajo demanda tras la creación del cluster. Las VNI dinámicas pueden adjuntarse a trabajadores específicos o configurarse para flotar entre trabajadores de la misma zona, siguiendo las cargas de trabajo de VM durante la migración en vivo.
Asistencia a la migración en directo
Con las VNI conectadas a nodos de trabajo de metal desnudo, las migraciones en directo de máquinas virtuales basadas en la virtualización de OpenShift pueden conservar las conexiones de red. La VNI flota implícitamente y sigue la carga de trabajo entre instancias de trabajadores bare metal dentro de la misma zona.

Para conocer limitaciones y consideraciones importantes sobre las VNI, consulte Limitaciones y consideraciones.

Vinculación entre cuentas

En Red Hat OpenShift on IBM Cloud, los nodos trabajadores no se aprovisionan en su cuenta, lo que significa que la gestión del ciclo de vida de las VNI es ligeramente diferente de las instancias de metal desnudo de VPC independientes. El administrador del cluster Red Hat OpenShift on IBM Cloud tiene una visibilidad diferente a los adjuntos de las VNIs porque están adjuntas a cargas de trabajo que no son visibles dentro de la cuenta. Las diferencias en la gestión de VNI se tratan en esta documentación.

Para obtener más información sobre las VNI en instancias de VPC bare metal independientes, consulte Acerca de las interfaces de red virtuales.

Limitaciones y consideraciones

Modificaciones estáticas de VNI
No modifique las VNIs estáticas que se crean automáticamente para cada nodo trabajador. Aunque estas VNIs son visibles en su cuenta de VPC, no se admite ningún cambio en su configuración. Esto incluye adjuntar IPs flotantes, cambiar grupos de seguridad o modificar cualquier otra propiedad de la VNI. La modificación de VNIs estáticas puede causar problemas de conectividad en el cluster.
Restricciones a la modificación del VNI para los accesorios flotantes
No es posible modificar las propiedades VNI de los anexos dinámicos flotantes (con ámbito de clúster). Esto incluye cambios en el nombre de la VNI, direcciones IP flotantes, configuración NAT de la infraestructura y asignaciones de grupos de seguridad. Para actualizar estos ajustes, primero debe desconectar la VNI, realizar los cambios y, a continuación, volver a conectarla al clúster. Esta limitación es temporal.
Limitaciones de zona
Las VNI están vinculadas a una subred VPC específica y no pueden flotar entre zonas. En los clústeres multizona de Red Hat OpenShift on IBM Cloud, las VNI sólo pueden gestionar el tráfico de las cargas de trabajo que se ejecutan en los trabajadores de clúster de la misma zona en la que se aprovisiona la VNI. Esto también significa que debe evitar OpenShift Virtualization VM la migración en vivo entre zonas cuando la VM específica está utilizando una VNI en una UDN de Localnet.
Requisitos de metal desnudo
Las VNI sólo se admiten en nodos trabajadores de metal desnudo. Los nodos trabajadores de instancia de servidor virtual (VSI) no admiten VNI.
Requisito RHCOS
Los nodos de trabajo deben ejecutar el sistema operativo Red Hat CoreOS (RHCOS).
OVN- Kubernetes CNI
Los clusters deben utilizar el plugin OVN- Kubernetes Container Network Interface (CNI).
Requisitos de la versión
La compatibilidad con VNI requiere OpenShift 4.20 o posterior.
Restricciones UDN de Localnet
Las UDN de Localnet tienen desactivada la gestión de direcciones IP (IPAM) en el lado de OVN, lo que significa que la asignación de direcciones IP estáticas a los pods no se realiza desde OVN. Esta configuración está diseñada para cargas de trabajo VM que utilizan DHCP o configuran IPs estáticas dentro del sistema operativo invitado. Los pods normales no pueden adjuntarse a UDNs de localnet.

Requisitos previos

Antes de empezar, asegúrate de que dispones de los siguientes recursos y permisos.

  • Un clúster Red Hat OpenShift on IBM Cloud en la versión 4.20 o posterior con nodos de trabajo bare metal
  • Infraestructura VPC con VNIs creadas
  • Sistema operativo RHCOS en los nodos trabajadores
  • OpenShift Operador de virtualización instalado
  • Almacenamiento configurado para la virtualización OpenShift
  • El rol de acceso a la plataforma Operador para Kubernetes Service en IBM Cloud IAM
  • El rol de acceso a la plataforma Editor o Administrador para Servicios de Infraestructura VPC en IBM Cloud IAM
  • Permitir el acceso de las cuentas de la lista a las funciones VNI
  • OVN- Kubernetes CNI (necesario para la compatibilidad con VNI en 4.20 +)

Para obtener información general sobre las configuraciones multired, consulte la página Red Hat OpenShift documentación sobre redes múltiples.

Creación de UDNs superpuestas para Pods y VMs

Puede crear redes definidas por el usuario superpuestas para utilizarlas con pods o cargas de trabajo de VM. La experiencia de la interfaz de usuario de la consola OpenShift para redes definidas por el usuario está sujeta a cambios con las últimas versiones. Los ejemplos de esta documentación utilizan definiciones YAML para facilitar su reutilización.

Creación de una UDN primaria

Para utilizar una red primaria definida por el usuario para los pods o la carga de trabajo de VM, cree primero la propia UDN.

Ejemplo de una red definida por el usuario de clúster que puede utilizarse en varios espacios de nombres:

apiVersion: k8s.ovn.org/v1
kind: ClusterUserDefinedNetwork
metadata:
  name: primary
spec:
  namespaceSelector:
    matchLabels:
      kubernetes.io/metadata.name: green
  network:
    layer2:
      ipam:
        lifecycle: Persistent
      role: Primary
      subnets:
        - 10.0.0.0/24
    topology: Layer2

A continuación, cree el espacio o espacios de nombres que lo utilizarán. El espacio de nombres debe contener una etiqueta específica (denominada k8s.ovn.org/primary-user-defined-network) en el momento de su creación para el uso de UDN primarios.

Ejemplo:

kind: Namespace
apiVersion: v1
metadata:
  name: green
  labels:
    k8s.ovn.org/primary-user-defined-network: ''

Una vez que la (C)UDN y los espacios de nombres estén en su lugar, cualquier carga de trabajo creada en este espacio de nombres accederá a la UDN con la ruta predeterminada.

Creación de un UDN secundario

La configuración de la UDN secundaria es similar a la de la UDN primaria, pero con el rol establecido en Secondary. Para más información, consulte la documentación sobre redes múltiples de Red Hat OpenShift.

Exposición de máquinas virtuales con equilibradores de carga VPC

Puede exponer VMs sin utilizar UDN o localnet VNI utilizando VPC Application Load Balancers. Para obtener más información sobre la configuración de los equilibradores de carga, consulte Acerca de los equilibradores de carga VPC.

Configuración de redes localnet definidas por el usuario

Las UDN de Localnet requieren la preparación de la red OVN del clúster Red Hat OpenShift on IBM Cloud. En los nodos de clúster de metal desnudo, las dos interfaces de red estáticas tienen nombres predecibles en el sistema operativo host. La interfaz de red dedicada a transportar el tráfico VNI adjunto dinámico se denomina eth1. Aprovechar Localnet requiere la creación de un puente OVS dedicado en los nodos de clúster de metal desnudo, sobre eth1. Prepare un ID de VLAN que utilizará para adjuntar las VNI. También se hará referencia a él en el recurso CUDN.

Instalación del operador NMState

OpenShift Servicio de virtualización Los clústeres tienen el operador NMState preinstalado y gestionado por el complemento « openshift-virtualization ». Omite este paso si utilizas el Servicio de virtualización.

  1. Despliegue el Operador NMState desde OperatorHub en la consola Red Hat OpenShift on IBM Cloud o utilizando la CLI.

  2. Crear una instancia de NMState con la configuración por defecto.

    apiVersion: nmstate.io/v1
    kind: NMState
    metadata:
      name: nmstate
    spec:
      probeConfiguration:
        dns:
          host: root-servers.net
    

Creación del puente OVS

OpenShift Servicio de virtualización Los clústeres tienen los recursos NNCP necesarios preconfigurados. Solo es necesario crear estos recursos manualmente en el caso de los clústeres estándar de OpenShift con instalación manual de Virtualization OpenShift.

  1. Cree un puente OVS dedicado con eth1 conectado a él desplegando el siguiente recurso personalizado NMState.

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: "br-eth1"
    spec:
      desiredState:
        interfaces:
        - name: "br-eth1"
          description: A dedicated OVS bridge with a NIC as a port
          type: ovs-bridge
          state: up
          bridge:
            allow-extra-patch-ports: true
            options:
              stp: false
            port:
            - name: "eth1"
    
  2. Compruebe el estado del recurso personalizado y espere hasta que todos los nodos de clúster aplicables reconcilien la solicitud de creación de puente.

  3. Parchea el nuevo puente OVS con el predeterminado creando el siguiente recurso personalizado NMState. Sustituya vpc-vlans por el nombre de red que desee.

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: "vpc-vlans"
    spec:
      desiredState:
        ovn:
          bridge-mappings:
          - localnet: "vpc-vlans"
            bridge: "br-eth1"
            state: present
    
  4. Compruebe el estado del recurso personalizado y espere hasta que todos los nodos de clúster aplicables reconcilien la solicitud de asignación de puentes.

Creación de una red localnet definida por el usuario

Cree una UDN o ClusterUserDefinedNetwork (CUDN) que ponga a disposición el tráfico de las VNI utilizando la VLAN seleccionada.

apiVersion: k8s.ovn.org/v1
kind: ClusterUserDefinedNetwork
metadata:
  name: "vlan250"
spec:
  namespaceSelector:
    matchExpressions:
    - key: kubernetes.io/metadata.name
      operator: In
      values:
      - "default"
  network:
    topology: Localnet
    localnet:
      role: "Secondary"
      physicalNetworkName: "vpc-vlans"
      ipam:
        mode: Disabled
      vlan:
        mode: Access
        access:
          id: 250

Sustituya los valores siguientes:

  • vlan250: El nombre de su CUDN
  • default: El espacio de nombres en el que desea utilizar el CUDN
  • vpc-vlans: El nombre de la red física que definió en la asignación de puentes
  • 250: Su ID de VLAN deseado (rango: 1-500)

Con esto concluye la fontanería de red de una VLAN específica. Se pueden definir varios CUDN utilizando diferentes ID de VLAN y reutilizando las asignaciones de puentes.

Después de completar la configuración localnet UDN, puede adjuntar VNIs al clúster utilizando la consola IBM Cloud o el comando IBM Cloud CLI ks vni. Consulte los ejemplos de las secciones siguientes.

Adjuntar VNIs a su clúster

Después de configurar la UDN localnet, puede adjuntar VNIs a su clúster utilizando la consola IBM Cloud o la CLI.

Antes de empezar

  1. Cree VNIs en su VPC con la configuración adecuada de subred y dirección IP.

  2. Asegúrese de que dispone de los permisos necesarios para gestionar tanto el clúster como las VNI.

Adjuntar una VNI desde la consola

Puede adjuntar una VNI a un nodo trabajador específico (no flotante) o al clúster (flotante). Las VNI flotantes pueden seguir las cargas de trabajo entre trabajadores de la misma zona.

Las VNIs, subredes y nodos trabajadores son recursos zonales. La zona de cálculo VNI debe coincidir con la zona de trabajadores seleccionada. Para los accesorios flotantes, se asume la zona del VNI, y el accesorio flotante también tiene la restricción de zona. Las VNI se pueden conectar desde subredes arbitrarias, pero sólo desde dentro de la misma VPC que el clúster.

  1. En la consola de clusters Red Hat OpenShift on IBM Cloud, seleccione su cluster.

  2. En el menú de navegación, haga clic en Redes > Adjuntos VNI.

  3. Haga clic en Adjuntar VNIs.

  4. En el panel Adjuntar VNIs, configure los siguientes ajustes:

    • Subred: Seleccione la subred en la que se encuentra su VNI. Sólo están disponibles las subredes de la misma zona que sus nodos trabajadores.
    • Nodo trabajador: Seleccione un nodo de trabajador específico al que adjuntar la VNI, o seleccione Todos los nodos de trabajador para crear una adjunción de VNI flotante que pueda seguir cargas de trabajo entre trabajadores de la misma zona.
    • VNI: Seleccione la VNI que desea adjuntar de entre las VNI disponibles en la subred seleccionada.
    • ID VLAN: Introduzca el ID de VLAN (intervalo: 1-500) que coincida con su configuración UDN de localnet.
    • Borrado automático: Opcional. Seleccione esta opción para eliminar automáticamente la VNI cuando se elimine del clúster.
  5. Pulse Conectar.

Adjuntar una VNI desde la CLI

Puede adjuntar una VNI a un nodo trabajador específico (no flotante) o al clúster (flotante). Las VNI flotantes pueden seguir las cargas de trabajo entre trabajadores de la misma zona.

Las VNIs, subredes y nodos trabajadores son recursos zonales. La zona de cálculo VNI debe coincidir con la zona de trabajadores seleccionada. Para los accesorios flotantes, se asume la zona del VNI, y el accesorio flotante también tiene la restricción de zona. Las VNI se pueden conectar desde subredes arbitrarias, pero sólo desde dentro de la misma VPC que el clúster.

Para adjuntar una VNI a un nodo trabajador específico, ejecute el siguiente comando.

ibmcloud ks vni attach baremetal --worker WORKER_ID --vni VNI_ID --vlan VLAN_ID [--auto-delete]

Para adjuntar una VNI flotante al clúster, ejecute el siguiente comando.

ibmcloud ks vni attach baremetal --cluster-id CLUSTER_ID --vni VNI_ID --vlan VLAN_ID [--auto-delete]
--worker WORKER_ID
El identificador del nodo de trabajo. Para listar los ID de los trabajadores, ejecute ibmcloud ks workers --cluster CLUSTER.
--cluster-id CLUSTER_ID
El identificador del clúster. Para listar los ID de clúster, ejecute ibmcloud ks clusters.
--vni VNI_ID
El ID de la VNI a adjuntar.
--vlan VLAN_ID
El ID de VLAN para el adjunto (rango: 1-500). Debe coincidir con el ID de VLAN de la configuración CUDN.
--auto-delete
Opcional: Elimine automáticamente la VNI cuando se elimine del clúster.

Ejemplo

ibmcloud ks vni attach baremetal --vni 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba --worker kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123 --vlan 251

Salida de ejemplo

OK
Successfully attached VNI 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba to worker node kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123.
Worker Node ID                                         VNI ID                                      VLAN ID
kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123   0716-aac49630-f3b4-4ef6-9a3a-5145481697ba   251

Ver anexos VNI

Puede ver los archivos adjuntos VNI desde la consola IBM Cloud o utilizando la CLI.

Visualización de archivos adjuntos VNI desde la consola

  1. En la consola de clusters Red Hat OpenShift on IBM Cloud, seleccione su cluster.

  2. En el menú de navegación, haga clic en Redes > Adjuntos VNI.

  3. La página Adjuntos de interfaz de red virtual muestra una tabla con la siguiente información para cada VNI adjunta:

    • VNI name: El nombre de la interfaz de red virtual
    • Nombre del nodo de trabajo: El nodo de trabajo donde se adjunta el VNI, o indica si se trata de un archivo adjunto flotante
    • Subred: La subred de la VPC asociada a la VNI
    • ID DE VLAN: El ID de VLAN utilizado para el archivo adjunto
    • IP primaria: La dirección IP primaria de la VNI
  4. Opcional: Utilice los filtros de la parte superior de la página para filtrar las VNI por subred o nodo trabajador.

Visualización de archivos adjuntos VNI desde la CLI

Para listar todas las VNIs conectadas a un cluster, ejecute el siguiente comando.

ibmcloud ks vni ls --cluster-id CLUSTER_ID

Para listar las VNIs adjuntas a un trabajador específico, ejecute el siguiente comando.

ibmcloud ks vni ls --worker WORKER_ID

Salida de ejemplo

ibmcloud ks vni ls --cluster-id c9pqfcmw0tq431jdnrrg
OK
VNI ID                                      Worker Node                                            IP Address   MAC Address         VLAN   Floating   Auto-delete
0716-d97d3626-acb2-476b-8b12-bcafa1dec5bb   kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000456   10.240.1.5   02:00:02:00:73:A5   250    -          false
0716-aac49630-f3b4-4ef6-9a3a-5145481697ba   kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123   10.240.1.4   02:00:01:00:73:A5   251    -          false

Separación de VNIs

Puede separar VNIs desde la consola IBM Cloud o utilizando la CLI.

Separación de VNIs de la consola

  1. En la consola de clusters Red Hat OpenShift on IBM Cloud, seleccione su cluster.

  2. En el menú de navegación, haga clic en Redes > Adjuntos VNI.

  3. En la tabla Anexos de interfaz de red virtual, busque la VNI que desea desvincular.

  4. Haga clic en el icono del menú de acciones (⋯) de la VNI y seleccione Separar.

  5. En el cuadro de diálogo de confirmación, haga clic en Separar para confirmar la acción.

Separación de VNIs de la CLI

Para separar una VNI de un nodo trabajador, debe especificar tanto el ID de la VNI como el ID del trabajador.

ibmcloud ks vni detach --worker WORKER_ID --vni VNI_ID

Para VNIs flotantes, primero liste los VNIs para encontrar el ID de trabajador actual, luego desvincule usando ese ID de trabajador.

Ejemplo

ibmcloud ks vni detach --vni 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba --worker kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123
Detach VNI 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba from worker node kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123? This action cannot be undone. [y/N]> y
OK
Successfully detached VNI 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba from worker node kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123.

Uso de VNIs con OpenShift Virtualization

Después de adjuntar VNIs y configurar UDNs de localnet, puede utilizarlas con VMs de Virtualización OpenShift.

  1. Cree VMs con OpenShift Virtualization y añada la CUDN como red secundaria. Los anexos de Localnet no pueden utilizarse como redes primarias. Puede utilizar la consola OpenShift para añadir el archivo adjunto.

  2. Especifique la dirección MAC del anexo para permitir que el sistema operativo VM obtenga su dirección IP mediante DHCP. Como alternativa, puede asignar la dirección IP VNI de forma estática a la interfaz de red correspondiente en VM.

Para más información sobre la creación y gestión de máquinas virtuales, consulte la siguiente documentación Red Hat:

Resolución de problemas de las VNI

¿Por qué no puedo adjuntar pods normales a UDNs de localnet?

Las UDN de Localnet tienen desactivada la gestión de direcciones IP (IPAM) en el lado de OVN, lo que significa que la asignación de direcciones IP estáticas a los pods no se realiza desde OVN. Esta configuración está diseñada para cargas de trabajo VM que utilizan DHCP o configuran IPs estáticas dentro del sistema operativo invitado. Estas opciones no están disponibles para cargas de trabajo pod.

¿Por qué está pendiente la migración en directo entre grupos de trabajadores?

Diferentes grupos de trabajadores pueden tener diferentes tipos de trabajadores con CPUs de diferentes generaciones y capacidades. Si el conjunto completo de funciones de la CPU es visible de forma transparente para la carga de trabajo de VM, no podrá migrar en vivo VM a otro trabajador que no admita todas las funciones de la CPU. Puede limitar las características visibles de la CPU del sistema operativo invitado al principio para obtener más compatibilidad entre los sabores de los trabajadores.

¿Por qué no funcionan las VNI adjuntas dinámicas?

Compruebe los elementos siguientes:

  • Compruebe que el ID de VLAN del CUDN coincide con el ID de VLAN del adjunto VNI. El DHCP de la VPC podría seguir funcionando sin más tráfico si la VLAN no coincide.
  • Si la flotación no está activada, asegúrese de que la carga de trabajo está programada en el trabajador en el que está conectada la VNI.
  • Compruebe que el puente OVS dedicado y la asignación están presentes en los trabajadores. Compruebe el estado del recurso NodeNetworkConfigurationPolicy.