Despliegue de aplicaciones de contenedor de interfaces de red activadas para SR-IOV en OKE mediante el plugin Multus CNI

Introducción

En este tutorial, exploraremos cómo desplegar aplicaciones en contenedores en nodos de trabajador de instancia virtual dentro de Oracle Cloud Infrastructure Kubernetes Engine (OKE), aprovechando capacidades de red avanzadas. En concreto, activaremos la virtualización de E/S de raíz única (SR-IOV) para las interfaces de red de contenedor y configuraremos el complemento Multus CNI para activar la red de hosts múltiples para los contenedores.

Al combinar SR-IOV con Multus, puedes lograr redes de alto rendimiento y baja latencia para cargas de trabajo especializadas como IA, aprendizaje automático y procesamiento de datos en tiempo real. En este tutorial se proporcionarán instrucciones paso a paso para configurar el entorno de OKE, desplegar nodos de trabajador con interfaces activadas para SR-IOV y utilizar Multus CNI para gestionar varias interfaces de red en los pods. Ya sea que esté buscando un procesamiento de paquetes de alta velocidad o necesite ajustar su red de Kubernetes, este tutorial le proporcionará las herramientas y los conocimientos necesarios para comenzar.

Nota:

image

Objetivos

Tarea 1: Despliegue de OKE con un bastión, un operador, tres nodos de trabajador de VM y el plugin CNI de Flannel

Asegúrese de que OKE se despliegue con la siguiente configuración:

Esta configuración se detalla en el tutorial aquí: Despliegue de un cluster de Kubernetes con Terraform con Oracle Cloud Infrastructure Kubernetes Engine.

La siguiente imagen muestra una visión general visual de los componentes con los que trabajaremos a lo largo de este tutorial.

image

Tarea 2: Activación de la red SR-IOV (asistida por hardware) en cada nodo de trabajador

Nota: Se deben realizar los siguientes pasos en todos los nodos de trabajador que forman parte del cluster de OKE.

En la siguiente imagen se muestra una visión general visual de nuestros nodos de trabajador dentro del cluster de OKE con los que trabajaremos a lo largo de este tutorial.

image

Activar SR-IOV en la instancia

Tarea 3: Creación de una nueva subred para las VNIC activadas para SR-IOV

Crearemos una subred dedicada que utilizarán nuestras interfaces habilitadas para SR-IOV.

Tarea 3.1: Creación de una Lista de Seguridad

Como ya estamos utilizando listas de seguridad para las otras subredes, pero también necesitamos una lista de seguridad dedicada para la subred SR-IOV recién creada.

Tarea 3.2: Creación de una subred

Tarea 4: Agregar una segunda asociación de VNIC

En la siguiente imagen se muestra una visión general visual de cómo los nodos de trabajador tienen una única VNIC que está conectada a la subred de nodos de trabajador antes de agregar una segunda VNIC.

image

Antes de agregar una segunda asociación de VNIC a los nodos de trabajador, cree un grupo de seguridad de red.

Tarea 4.1: Creación de un grupo de seguridad de red (NSG)

Ya estamos utilizando el NSG para las otras VNIC, pero también necesitamos un NSG dedicado para la VNIC recién creada que agregaremos a una instancia virtual existente que forme parte del cluster de OKE y que desempeñará su papel como nodo de trabajador de Kubernetes. Esta interfaz será una VNIC donde tenemos SR-IOV activado.

Tarea 4.2: Agregar la VNIC

Tarea 5: Asignación de una dirección IP a la nueva segunda VNIC con un gateway por defecto

Ahora que se ha creado la segunda VNIC en la tarea 4 y se ha conectado, debemos asignarle una dirección IP. Al agregar una segunda interfaz a una instancia, puede asignarla a la misma subred que la primera interfaz, o bien seleccionar una nueva subred.

DHCP no está activado para la segunda interfaz, por lo que la dirección IP debe asignarse manualmente.

Existen diferentes métodos para asignar la dirección IP para la segunda interfaz.

Para todos los nodos de trabajador, hemos asignado una dirección IP a la vNIC secundaria (ens5). Utilizamos el método 3 para asignar una dirección IP a la vNIC secundaria (ens5). Para obtener más información sobre la asignación de una dirección IP a la segunda VNIC, consulte Assign an IP Address to a Second Interface on an Oracle Linux Instance.

Una vez que la dirección IP se ha asignado a una VNIC, debemos verificar si la dirección IP de la segunda VNIC está configurada correctamente. También podemos verificar si hemos activado SR-IOV en todos los nodos de trabajador del pool de nodos.

Nuestro cluster de OKE consta de:

Pool de nodos  
NP1 1 x nodo de trabajador
NP2 3 x nodos de trabajador

Verificaremos todos los nodos de trabajador en todos los pools de nodos.

Tarea 5.1: Verificación de todos los nodos del pool de nodos 1 (np1)

Tarea 5.2: Verificación de todos los nodos del pool de nodos 2 (np2)

Tarea 6: Instalación de un CNI de metaplugina (Multus CNI) en el nodo de trabajador

Multus CNI es un plugin de interfaz de red de contenedores (CNI) de Kubernetes que permite asociar varias interfaces de red a un pod.

Cómo funciona Multus CNI

Por qué necesitamos Multus CNI

Tarea 6.1: Instalación de Multus CNI mediante el método de instalación delgada

Lo que hace el juego de daemon de Multus

Tarea 6.2: Validación de la instalación de Multus

Tarea 7: Asociación de interfaces de red a pods

En esta tarea, asignaremos o asociaremos una interfaz de contenedor a esta VNIC.

Para conectar interfaces adicionales a los pods, necesitamos una configuración para que se conecte la interfaz.

Hay varios plugins CNI que se pueden utilizar junto con Multus para lograr esto. Para obtener más información, consulte Visión general de plugins.

En el siguiente ejemplo, se muestran los objetos NetworkAttachmentDefinition que configuran la interfaz ens5 secundaria que se agregó a los nodos.

Tarea 7.1: Crear definición de asociación de red

NetworkAttachmentDefinition se utiliza para configurar la asociación de red, por ejemplo, la interfaz secundaria para el pod.

Existen dos modos de configurar NetworkAttachmentDefinition:

Nota: En este tutorial, vamos a utilizar el método mediante el archivo de configuración de CNI.

Tenemos 4 nodos de trabajador x y cada nodo de trabajador tiene una segunda VNIC que asignaremos a una interfaz en un contenedor (pod).

Tarea 7.2: Creación de pods con NetworkDefinitionAttachment asociado

En esta tarea, vincularemos NetworkAttachmentDefinitions a un contenedor o pod real.

En la siguiente tabla, hemos creado una asignación en qué pod queremos alojar en qué nodo de trabajador.

IP de nodo de trabajador (principal) ens5 name nombre de pod finalizado
10.0.112.134 10.0.3.30/27 sriov-vnic-1 testpod1
10.0.66.97 10.0.3.15/27 sriov-vnic-2 testpod2
10.0.73.242 10.0.3.14/27 sriov-vnic-3 testpod3
10.0.89.50 10.0.3.16/27 sriov-vnic-4 testpod4

Tarea 7.3: Creación de pods con afinidad de nodos

Por defecto, Kubernetes decidirá dónde se colocarán los pods (nodo de trabajador). En este ejemplo, esto no es posible porque NetworkAttachmentDefinition está enlazado a una dirección IP y esta dirección IP está enlazada a una VNIC y esta VNIC está enlazada a un nodo de trabajador específico. Por lo tanto, debemos asegurarnos de que los pods que creamos terminarán en el nodo de trabajador que deseamos y esto es necesario cuando asociamos NetworkAttachmentDefinition a un pod.

Si no lo hacemos, puede ocurrir que un pod termine en un punto diferente donde la dirección IP esté disponible para el pod. Por lo tanto, el pod no podrá comunicarse mediante la interfaz activada para SR-IOV.

Tarea 7.4: Verificación de la dirección IP en los pods de prueba

Tarea 7.5: Verificación de la dirección IP en los nodos de trabajador

Tarea 8: Realización de pruebas de ping entre varios pods

Todos los pods tienen una dirección IP de la subred de OCI donde se conectan las VNIC activadas para SR-IOV, podemos realizar algunas pruebas de ping para verificar si la conectividad de red funciona correctamente.

Nota: En este ejemplo, estamos utilizando testpod1 para hacer ping a todas las demás direcciones IP net1 de los pods de prueba.

Tarea 9: (Opcional) Despliegue de pods con varias interfaces

Hasta ahora, solo hemos preparado una VNIC (que admite SR-IOV) y hemos movido esta VNIC a un pod. Hemos hecho esto para cuatro pods de prueba diferentes.

¿Y si queremos agregar o mover más VNIC a un pod concreto? Debe repetir estos pasos:

En esta tarea, encontrará un ejemplo en el que crearemos una subred adicional, VNIC, asignaremos la dirección IP, NetworkAttachmentDefinition y la agregaremos al archivo YAML de creación de pods para testpod1.

Tarea 10: Eliminar todos los despliegues de pod y NetworkAttachmentDefinitions

Si desea volver a empezar o desea limpiar los contenedores con NetworkAttachmentDefinitions, siga los pasos:

Acuses de recibo

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.