Distribuisci applicazioni contenitore interfacce di rete abilitate per SR-IOV su OKE utilizzando il plugin Multus CNI

Introduzione

In questa esercitazione esploreremo come distribuire applicazioni containerizzate sui nodi di lavoro delle istanze virtuali all'interno di Oracle Cloud Infrastructure Kubernetes Engine (OKE), sfruttando funzionalità di rete avanzate. In particolare, abiliteremo la virtualizzazione SR-IOV (Single Root I/O Virtualization) per le interfacce di rete dei container e configureremo il plugin Multus CNI per abilitare la rete multihoming per i container.

Combinando SR-IOV con Multus, puoi ottenere reti ad alte prestazioni e a bassa latenza per carichi di lavoro specializzati come AI, Machine Learning ed elaborazione dei dati in tempo reale. Questa esercitazione fornisce istruzioni dettagliate per configurare l'ambiente OKE, distribuire i nodi di lavoro con interfacce abilitate per SR-IOV e utilizzare Multus CNI per gestire più interfacce di rete nei pod. Sia che tu stia puntando all'elaborazione di pacchetti ad alta velocità o abbia bisogno di perfezionare il tuo networking Kubernetes, questo tutorial ti fornirà gli strumenti e le conoscenze per iniziare.

Nota:

immagine

Obiettivi

Task 1: Distribuire OKE con un bastion, un operatore, tre nodi di lavoro VM e il plugin CNI Flannel

Assicurarsi che OKE venga distribuito con l'impostazione seguente:

Questa impostazione è descritta nel dettaglio nell'esercitazione qui: Distribuisci un cluster Kubernetes con Terraform utilizzando Oracle Cloud Infrastructure Kubernetes Engine.

L'immagine seguente mostra una panoramica visiva dei componenti con cui lavoreremo durante questo tutorial.

immagine

Task 2: Abilitare la rete SR-IOV (Hardware-Assisted) su ogni nodo lavoratore

Nota: è necessario eseguire i passi riportati di seguito su tutti i nodi di lavoro che fanno parte del cluster OKE.

La seguente immagine mostra una panoramica visiva dei nodi di lavoro all'interno del cluster OKE con cui lavoreremo durante questa esercitazione.

immagine

Abilita SR-IOV sull'istanza

Task 3: Creare una nuova subnet per le VNIC abilitate per SR-IOV

Creeremo una subnet dedicata che le nostre interfacce abilitate per SR-IOV utilizzeranno.

Task 3.1: Creare una lista di sicurezza

Poiché stiamo già utilizzando liste di sicurezza per le altre subnet, abbiamo anche bisogno di una lista di sicurezza dedicata per la subnet SR-IOV appena creata.

Task 3.2: Creare una subnet

Task 4: Aggiungi un secondo allegato VNIC

L'immagine riportata di seguito mostra una panoramica visiva di come i nodi di lavoro dispongono di una singola VNIC connessa alla subnet dei nodi di lavoro prima di aggiungere una seconda VNIC.

immagine

Prima di aggiungere un secondo collegamento VNIC ai nodi di lavoro, creare un gruppo di sicurezza di rete.

Task 4.1: Creare un gruppo di sicurezza di rete (NSG)

Stiamo già utilizzando NSG per le altre VNIC, ma abbiamo anche bisogno di un gruppo NSG dedicato per la nuova VNIC creata che aggiungeremo a un'istanza virtuale esistente che fa parte del cluster OKE e che farà la sua parte come nodo di lavoro Kubernetes. Questa interfaccia sarà una VNIC in cui è abilitato SR-IOV.

Task 4.2: aggiungere la VNIC

Task 5: Assegnazione di un indirizzo IP alla nuova seconda VNIC con un gateway predefinito

Ora che la seconda VNIC è stata creata nel Task 4 e collegata, dobbiamo assegnarvi un indirizzo IP. Quando aggiungi una seconda interfaccia a un'istanza, puoi assegnarla alla stessa subnet della prima interfaccia oppure puoi scegliere una nuova subnet.

DHCP non è abilitato per la seconda interfaccia, pertanto l'indirizzo IP deve essere assegnato manualmente.

Esistono diversi metodi per assegnare l'indirizzo IP per la seconda interfaccia.

Per tutti i nodi di lavoro, è stato assegnato un indirizzo IP alla vNIC secondaria (ens5). Abbiamo utilizzato il metodo 3 per assegnare un indirizzo IP alla vNIC secondaria (ens5). Per ulteriori informazioni sull'assegnazione di un indirizzo IP alla seconda VNIC, vedere Assign an IP Address to a Second Interface on an Oracle Linux Instance.

Una volta che l'indirizzo IP è stato assegnato a una VNIC, è necessario verificare se l'indirizzo IP della seconda VNIC è configurato correttamente. Possiamo anche verificare se abbiamo abilitato SR-IOV su tutti i nodi di lavoro del pool di nodi.

Il nostro cluster OKE è composto da:

Pool di nodi  
NP1 1 x nodo di lavoro
NP2 3 x nodi di lavoro

Verificheremo tutti i nodi di lavoro in tutti i pool di nodi.

Task 5.1: Verifica tutti i nodi nel pool di nodi 1 (np1)

Task 5.2: Verifica tutti i nodi nel pool di nodi 2 (np2)

Task 6: Installare un CNI Meta-Plugin (Multus CNI) sul nodo di lavoro

Multus CNI è un plugin Container Network Interface (CNI) Kubernetes che consente di collegare più interfacce di rete a un pod.

Come funziona Multus CNI

Perché abbiamo bisogno di Multus CNI

Task 6.1: Installare Multus CNI utilizzando il metodo di installazione sottile

Cosa fa il set di daemon Multus

Task 6.2: Convalida installazione Multus

Task 7: Collegamento delle interfacce di rete ai pod

Questa procedura consente di mappare o attaccare un'interfaccia contenitore a questa VNIC.

Per collegare interfacce aggiuntive ai pod, è necessaria una configurazione per collegare l'interfaccia.

Ci sono diversi plugin CNI che possono essere utilizzati insieme a Multus per farlo. Per ulteriori informazioni, vedere Panoramica dei plugin.

L'esempio seguente mostra gli oggetti NetworkAttachmentDefinition che configurano l'interfaccia ens5 secondaria aggiunta ai nodi.

Task 7.1: Crea definizione allegato di rete

Il comando NetworkAttachmentDefinition viene utilizzato per impostare il collegamento di rete, ad esempio l'interfaccia secondaria per il pod.

Sono disponibili due modi per configurare NetworkAttachmentDefinition:

Nota: in questa esercitazione verrà utilizzato il metodo utilizzando il file di configurazione CNI.

Abbiamo 4 nodi di lavoro x e ogni nodo di lavoro ha una seconda VNIC che mapperemo a un'interfaccia su un contenitore (pod).

Task 7.2: Creare pod con NetworkDefinitionAttachment allegato

In questo task, legheremo NetworkAttachmentDefinitions a un contenitore o pod effettivo.

Nella tabella seguente, abbiamo creato un mapping su quale pod vogliamo ospitare sul nodo di lavoro.

IP nodo di lavoro (principale) ens5 name nome pod terminato
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

Task 7.3: Crea pod con affinità nodo

Per impostazione predefinita, Kubernetes deciderà dove verranno posizionati i pod (nodo di lavoro). In questo esempio, questa operazione non è possibile perché un indirizzo NetworkAttachmentDefinition è associato a un indirizzo IP e questo indirizzo IP è associato a una VNIC e questa VNIC è associata a un nodo di lavoro specifico. Quindi dobbiamo assicurarci che i pod che creiamo finiscano sul nodo di lavoro che vogliamo e questo è necessario quando colleghiamo il NetworkAttachmentDefinition a un pod.

Se non lo facciamo può accadere che un pod finisca su un altro dove l'indirizzo IP è disponibile per il pod. Pertanto, il pod non sarà in grado di comunicare utilizzando l'interfaccia abilitata per SR-IOV.

Task 7.4: Verificare l'indirizzo IP sui pod di test

Task 7.5: Verifica l'indirizzo IP sui nodi di lavoro

Task 8: Esecuzione di test di ping tra più pod

Tutti i pod dispongono di un indirizzo IP dalla subnet OCI in cui sono collegate le VNIC abilitate per SR-IOV, possiamo eseguire alcuni test di ping per verificare se la connettività di rete funziona correttamente.

Nota: in questo esempio viene utilizzato testpod1 per eseguire il ping di tutti gli altri pod di test net1 indirizzi IP.

Task 9: (Facoltativo) Distribuzione di pod con più interfacce

Fino ad ora abbiamo preparato una sola VNIC (che supporta SR-IOV) e spostato questa VNIC in un pod. Abbiamo fatto questo per quattro diversi test pod.

Ora cosa succede se vogliamo aggiungere o spostare più VNIC in un particolare pod? È necessario ripetere questi passi:

In questa attività, troverai un esempio in cui creeremo una subnet aggiuntiva, VNIC, assegneremo l'indirizzo IP, NetworkAttachmentDefinition e lo aggiungeremo al file YAML di creazione pod per testpod1.

Task 10: Rimuovi tutte le distribuzioni pod e NetworkAttachmentDefinitions

Se si desidera ricominciare da capo o pulire i contenitori con NetworkAttachmentDefinitions, attenersi alla procedura riportata di seguito.

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare Oracle Help Center.