Implantar Aplicativos de Contêiner de Interfaces de Rede Ativadas por SR-IOV no OKE Usando o Plug-in CNI Multus

Introdução

Neste tutorial, exploraremos como implantar aplicativos em contêineres em nós de trabalho de instância virtual no Oracle Cloud Infrastructure Kubernetes Engine (OKE), aproveitando os recursos avançados de rede. Especificamente, ativaremos a SR-IOV (Single Root I/O Virtualization) para interfaces de rede de contêineres e configurar o plug-in Multus CNI para ativar a rede de hospedagem múltipla para seus contêineres.

Combinando SR-IOV com Multus, você pode obter uma rede de alto desempenho e baixa latência para cargas de trabalho especializadas, como IA, machine learning e processamento de dados em tempo real. Este tutorial fornecerá instruções passo a passo para configurar seu ambiente OKE, implantar nós de trabalho com interfaces ativadas para SR-IOV e usar o Multus CNI para gerenciar várias interfaces de rede em seus pods. Se você está visando o processamento de pacotes de alta velocidade ou precisa ajustar sua rede do Kubernetes, este tutorial irá equipá-lo com as ferramentas e o conhecimento para começar.

Observação:

image

Objetivos

Tarefa 1: Implantar o OKE com um Bastion, um Operador, Três Nós de Trabalho de VM e o Plug-in Flannel CNI

Certifique-se de que o OKE esteja implantado com a seguinte configuração:

Essa configuração é detalhada no tutorial aqui: Implante um Cluster do Kubernetes com o Terraform usando o Oracle Cloud Infrastructure Kubernetes Engine.

A imagem a seguir mostra uma visão geral dos componentes com os quais trabalharemos ao longo deste tutorial.

image

Tarefa 2: Ativar a Rede SR-IOV (Assistida por Hardware) em Cada Nó de Trabalho

Observação: as seguintes etapas precisam ser executadas em todos os nós de trabalho que fazem parte do cluster do OKE.

A imagem a seguir mostra uma visão geral visual de nossos nós de trabalho dentro do cluster do OKE com o qual trabalharemos ao longo deste tutorial.

image

Ativar SR-IOV na Instância

Tarefa 3: Criar uma Nova Sub-rede para as VNICs Ativadas por SR-IOV

Criaremos uma sub-rede dedicada que nossas interfaces ativadas para SR-IOV usarão.

Tarefa 3.1: Criar uma Lista de Segurança

Como já estamos usando listas de segurança para as outras sub-redes, também precisamos de uma lista de segurança dedicada para a sub-rede SR-IOV recém-criada.

Tarefa 3.2: Criar uma Sub-rede

Tarefa 4: Adicionar um Segundo Anexo de VNIC

A imagem a seguir mostra uma visão geral visual de como os nós de trabalho têm uma única VNIC conectada à sub-rede dos nós de trabalho antes de adicionarmos uma segunda VNIC.

image

Antes de adicionarmos um segundo anexo de VNIC aos nós de trabalho, crie um Grupo de Segurança de Rede.

Tarefa 4.1: Criar um NSG (Network Security Group)

Já estamos usando o NSG para as outras VNICs, mas também precisamos de um NSG dedicado para a VNIC recém-criada que adicionaremos a uma instância virtual existente que faça parte do cluster do OKE e que faça sua parte como um nó de trabalho do Kubernetes. Essa interface será uma VNIC na qual temos o SR-IOV ativado.

Tarefa 4.2: Adicionar a VNIC

Tarefa 5: Designar um Endereço IP à Nova Segunda VNIC com um Gateway Padrão

Agora que a segunda VNIC foi criada na Tarefa 4 e anexada, precisamos designar um endereço IP a ela. Quando você adiciona uma segunda interface a uma instância, pode designá-la à mesma sub-rede da primeira interface ou pode escolher uma nova sub-rede.

O DHCP não está ativado para a segunda interface, portanto, o endereço IP precisa ser atribuído manualmente.

Existem diferentes métodos de atribuição do endereço IP para a segunda interface.

Para todos os nós de trabalho, designamos um endereço IP à vNIC secundária (ens5). Usamos o Método 3 para designar um endereço IP à vNIC secundária (ens5). Para obter mais informações sobre a designação de um endereço IP à segunda VNIC, consulte Designar um Endereço IP a uma Segunda Interface em uma Instância do Oracle Linux.

Depois que o endereço IP for designado a uma VNIC, precisaremos verificar se o endereço IP nas segundas VNICs está configurado corretamente. Também podemos verificar se ativamos o SR-IOV em todos os nós de trabalho do pool de nós.

Nosso cluster do OKE consiste em:

Pool de Nós  
NP1 1 x Nó de Trabalho
NP2 3 x Nós de Trabalho

Verificaremos todos os nós de trabalho em todos os pools de nós.

Tarefa 5.1: Verificar todos os Nós no Pool de Nós 1 (np1)

Tarefa 5.2: Verificar todos os Nós no Pool de Nós 2 (np2)

Tarefa 6: Instalar um CNI de Meta-Plugin (Multus CNI) no Nó de Trabalho

O Multus CNI é um plug-in da Interface de Rede de Contêiner (CNI) do Kubernetes que permite anexar várias interfaces de rede a um pod.

Como funciona o Multus CNI

Por que precisamos do Multus CNI

Tarefa 6.1: Instalar Multus CNI usando o Método de Instalação Fina

O que o conjunto de daemon Multus faz

Tarefa 6.2: Validar a instalação do Multus

Tarefa 7: Anexar Interfaces de Rede a Pods

Nesta tarefa, mapearemos ou anexaremos uma interface de contêiner a essa VNIC.

Para anexar interfaces adicionais aos pods, precisamos de uma configuração para a interface a ser anexada.

Existem vários plugins CNI que podem ser usados ao lado do Multus para conseguir isso. Para obter mais informações, consulte Visão Geral de Plug-ins.

O exemplo a seguir mostra objetos NetworkAttachmentDefinition que configuram a interface ens5 secundária que foi adicionada aos nós.

Tarefa 7.1: Criar Definição de Anexo de Rede

O NetworkAttachmentDefinition é usado para configurar o anexo de rede, por exemplo, a interface secundária do pod.

Há duas maneiras de configurar o NetworkAttachmentDefinition:

Observação: Neste tutorial, usaremos o método usando o arquivo de configuração CNI.

Temos 4 nós de trabalho x e cada nó de trabalho tem uma segunda VNIC que vamos mapear para uma interface em um contêiner (pod).

Tarefa 7.2: Criar Pods com o NetworkDefinitionAttachment Anexado

Nesta tarefa, vincularemos o NetworkAttachmentDefinitions a um contêiner ou pod real.

Na tabela a seguir, criamos um mapeamento sobre qual pod queremos hospedar em qual nó de trabalho.

IP do Nó do Colaborador (Principal) ens5 name nome do pod finalizado
10.0.112.134 10.0.3.30/27 sriov-vnic-1 testpod1 SIM
10.0.66.97 10.0.3.15/27 sriov-vnic-2 testpod2 SIM
10.0.73.242 10.0.3.14/27 sriov-vnic-3 testpod3 SIM
10.0.89.50 10.0.3.16/27 sriov-vnic-4 testpod4 SIM

Tarefa 7.3: Criar Pods com Afinidade de Nó

Por padrão, o Kubernetes decidirá onde os pods serão colocados (nó do colaborador). Neste exemplo, isso não é possível porque uma NetworkAttachmentDefinition está vinculada a um endereço IP e esse endereço IP está vinculado a uma VNIC e essa VNIC está vinculada a um nó de trabalho específico. Portanto, precisamos ter certeza de que os pods que criamos terminarão no nó de trabalho desejado e isso é necessário quando anexamos o NetworkAttachmentDefinition a um pod.

Se não fizermos isso, pode acontecer que um pod acabe em um local diferente onde o endereço IP está disponível para o pod. Portanto, o pod não poderá se comunicar usando a interface ativada por SR-IOV.

Tarefa 7.4: Verificar o Endereço IP nos Pods de Teste

Tarefa 7.5: Verificar o Endereço IP nos Nós de Trabalho

Tarefa 8: Executar Testes de Ping entre Vários Pods

Todos os pods têm um endereço IP da sub-rede do OCI em que as VNICs ativadas por SR-IOV estão anexadas. Podemos fazer alguns testes de ping para verificar se a conectividade de rede está funcionando corretamente.

Observação: Neste exemplo, estamos usando testpod1 para fazer ping em todos os outros endereços IP net1 dos pods de teste.

Tarefa 9: (Opcional) Implantar Pods com Várias Interfaces

Até agora, só preparamos uma VNIC (que suporta SR-IOV) e movemos essa VNIC para um pod. Fizemos isso por quatro pods de teste diferentes.

E se quisermos adicionar ou mover mais VNICs para um pod específico? Você deve repetir estas etapas:

Nesta tarefa, você encontrará um exemplo em que criaremos uma sub-rede adicional, uma VNIC, designaremos o endereço IP, a NetworkAttachmentDefinition e adicionaremos isso ao arquivo YAML de criação de pod para testpod1.

Tarefa 10: Remover Todas as Implantações de Pod e NetworkAttachmentDefinitions

Se quiser recomeçar ou limpar os contêineres com o NetworkAttachmentDefinitions, siga as etapas:

Confirmações

Mais Recursos de Aprendizado

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning YouTube. Além disso, acesse education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.