Déployer des applications de conteneur d'interfaces réseau compatibles SR-IOV sur OKE à l'aide du module d'extension Multus CNI

Introduction

Dans ce tutoriel, nous allons découvrir comment déployer des applications en conteneur sur des noeuds de processus actif d'instance virtuelle au sein d'Oracle Cloud Infrastructure Kubernetes Engine (OKE), en tirant parti des fonctionnalités réseau avancées. Plus précisément, nous activerons la virtualisation d'E/S à root unique (SR-IOV) pour les interfaces réseau de conteneur et configurerons le module d'extension Multus CNI pour activer la mise en réseau multiréseau pour vos conteneurs.

En combinant SR-IOV avec Multus, vous pouvez mettre en réseau hautes performances et à faible latence pour des charges de travail spécialisées telles que l'IA, le machine learning et le traitement des données en temps réel. Ce tutoriel fournit des instructions détaillées pour configurer votre environnement OKE, déployer des noeuds de processus actif avec des interfaces compatibles SR-IOV et utiliser Multus CNI pour gérer plusieurs interfaces réseau dans vos pods. Que vous visiez un traitement de paquets à haute vitesse ou que vous ayez besoin d'affiner votre réseau Kubernetes, ce tutoriel vous fournira les outils et les connaissances nécessaires pour commencer.

Remarque :

image

Objectifs

Tâche 1 : déploiement d'OKE avec un bastion, un opérateur, trois noeuds VM Worker et le module d'extension CNI Flannel

Assurez-vous qu'OKE est déployé avec la configuration suivante :

Cette configuration est détaillée dans le tutoriel ici : Déploiement d'un cluster Kubernetes avec Terraform à l'aide d'Oracle Cloud Infrastructure Kubernetes Engine.

L'image suivante présente un aperçu visuel des composants avec lesquels nous allons travailler tout au long de ce tutoriel.

image

Tâche 2 : activer la mise en réseau SR-IOV (aide au matériel) sur chaque noeud de processus actif

Remarque : les étapes suivantes doivent être effectuées sur tous les noeuds de processus actifs qui font partie du cluster OKE.

L'image suivante présente un aperçu visuel de nos noeuds de processus actifs dans le cluster OKE avec lequel nous travaillerons tout au long de ce tutoriel.

image

Activer SR-IOV sur l'instance

Tâche 3 : création d'un sous-réseau pour les cartes d'interface réseau virtuelles compatibles SR-IOV

Nous allons créer un sous-réseau dédié que nos interfaces compatibles SR-IOV utiliseront.

Tâche 3.1 : créer une liste de sécurité

Comme nous utilisons déjà des listes de sécurité pour les autres sous-réseaux, nous avons également besoin d'une liste de sécurité dédiée pour le sous-réseau SR-IOV nouvellement créé.

Tâche 3.2 : création d'un sous-réseau

Tâche 4 : ajouter un deuxième attachement de carte d'interface réseau virtuelle

L'image suivante montre un aperçu visuel de la façon dont les noeuds de processus actif disposent d'une carte d'interface réseau virtuelle unique connectée au sous-réseau des noeuds de processus actif avant l'ajout d'une deuxième carte d'interface réseau virtuelle.

image

Avant d'ajouter un deuxième attachement de carte d'interface réseau virtuelle aux noeuds de processus actif, créez un groupe de sécurité réseau.

Tâche 4.1 : création d'un groupe de sécurité réseau

Nous utilisons déjà un groupe de sécurité réseau pour les autres cartes d'interface réseau virtuelles, mais nous avons également besoin d'un groupe de sécurité réseau dédié pour la carte d'interface réseau virtuelle nouvellement créée que nous ajouterons à une instance virtuelle existante qui fait partie du cluster OKE et qui jouera son rôle de noeud de processus actif Kubernetes. Cette interface sera une carte d'interface réseau virtuelle sur laquelle SR-IOV est activé.

Tâche 4.2 : ajouter la carte d'interface réseau virtuelle

Tâche 5 : affectation d'une adresse IP à la nouvelle deuxième carte d'interface réseau virtuelle avec une passerelle par défaut

Maintenant que la deuxième carte d'interface réseau virtuelle a été créée dans la tâche 4 et attachée, nous devons lui affecter une adresse IP. Lorsque vous ajoutez une deuxième interface à une instance, vous pouvez l'affecter au même sous-réseau que la première interface, ou vous pouvez choisir un nouveau sous-réseau.

DHCP n'étant pas activé pour la deuxième interface, l'adresse IP doit être assignée manuellement.

Il existe différentes méthodes d'affectation de l'adresse IP pour la deuxième interface.

Pour tous les noeuds de processus actif, nous avons affecté une adresse IP à la vNIC secondaire (ens5). Nous avons utilisé la méthode 3 pour affecter une adresse IP à la vNIC secondaire (ens5). Pour plus d'informations sur l'affectation d'une adresse IP à la deuxième carte d'interface réseau virtuelle, reportez-vous à Affectation d'une adresse IP à une deuxième interface sur une instance Oracle Linux.

Une fois l'adresse IP affectée à une carte d'interface réseau virtuelle, nous devons vérifier si l'adresse IP sur les deuxièmes cartes d'interface réseau virtuelles est configurée correctement. Nous pouvons également vérifier si nous avons activé SR-IOV sur tous les noeuds de processus actif de pool de noeuds.

Notre cluster OKE se compose des éléments suivants :

Pool de noeuds  
NP1 1 x noeud de processus actif
NP2 3 x noeuds de processus actif

Nous vérifierons tous les noeuds de processus actif dans tous les pools de noeuds.

Tâche 5.1 : vérifier tous les noeuds du pool de noeuds 1 (np1)

Tâche 5.2 : vérifier tous les noeuds du pool de noeuds 2 (np2)

Tâche 6 : installation d'un meta-plugin CNI (Multus CNI) sur le noeud de processus actif

Multus CNI est un module d'extension d'interface réseau de conteneur (CNI) Kubernetes qui vous permet d'attacher plusieurs interfaces réseau à un pod.

Comment fonctionne Multus CNI

Pourquoi nous avons besoin de Multus CNI

Tâche 6.1 : installation de Multus CNI à l'aide de la méthode d'installation légère

Fonctionnement de l'ensemble de démon Multus

Tâche 6.2 : valider l'installation de Multus

Tâche 7 : connexion d'interfaces réseau aux pods

Dans cette tâche, nous allons mapper ou attacher une interface de conteneur à cette carte d'interface réseau virtuelle.

Pour attacher des interfaces supplémentaires aux pods, nous avons besoin d'une configuration pour que l'interface soit attachée.

Il existe plusieurs plugins CNI qui peuvent être utilisés aux côtés de Multus pour y parvenir. Pour plus d'informations, reportez-vous à Présentation des modules d'extension.

L'exemple suivant présente les objets NetworkAttachmentDefinition qui configurent l'interface ens5 secondaire qui a été ajoutée aux noeuds.

Tâche 7.1 : Créer une définition de document joint réseau

NetworkAttachmentDefinition permet de configurer l'attachement réseau, par exemple l'interface secondaire du pod.

Il existe deux façons de configurer NetworkAttachmentDefinition :

Remarque : dans ce tutoriel, nous allons utiliser la méthode à l'aide du fichier de configuration CNI.

Nous avons 4 noeuds de processus actif et chaque noeud de processus actif dispose d'une deuxième carte d'interface réseau virtuelle que nous mettrons en correspondance avec une interface sur un conteneur (pod).

Tâche 7.2 : créer des pods avec NetworkDefinitionAttachment attaché

Dans cette tâche, nous allons lier NetworkAttachmentDefinitions à un conteneur ou pod réel.

Dans le tableau suivant, nous avons créé un mapping sur le pod que nous voulons héberger sur le noeud de processus actif.

Adresse IP du noeud de processus actif (principal) ens5 name nom de pod terminé
10.0.112.134 10.0.3.30/27 sriov-vnic-1 testpod1 YES
10.0.66.97 10.0.3.15/27 sriov-vnic-2 testpod2 YES
10.0.73.242 10.0.3.14/27 sriov-vnic-3 testpod3 YES
10.0.89.50 10.0.3.16/27 sriov-vnic-4 testpod4 YES

Tâche 7.3 : créer des pods avec affinité de noeud

Par défaut, Kubernetes décidera où les pods seront placés (noeud de travail). Dans cet exemple, cela n'est pas possible car une adresse NetworkAttachmentDefinition est liée à une adresse IP et cette adresse IP est liée à une carte d'interface réseau virtuelle et cette carte d'interface réseau virtuelle est liée à un noeud de processus actif spécifique. Nous devons donc nous assurer que les pods que nous créons se retrouveront sur le noeud de processus actif souhaité. Cette opération est requise lorsque nous attachons NetworkAttachmentDefinition à un pod.

Si nous ne le faisons pas, il se peut qu'un pod se retrouve sur un autre emplacement où l'adresse IP est disponible pour le pod. Par conséquent, le pod ne pourra pas communiquer à l'aide de l'interface compatible SR-IOV.

Tâche 7.4 : vérification de l'adresse IP sur les pods de test

Tâche 7.5 : vérifier l'adresse IP sur les noeuds de processus actif

Tâche 8 : effectuer des tests ping entre plusieurs pods

Tous les pods ont une adresse IP du sous-réseau OCI auquel les cartes d'interface réseau virtuelles avec activation SR-IOV sont attachées. Nous pouvons effectuer des tests ping pour vérifier que la connectivité réseau fonctionne correctement.

Remarque : dans cet exemple, nous utilisons testpod1 pour envoyer une commande ping à toutes les autres adresses IP net1 des pods de test.

Tâche 9 : (Facultatif) Déployer des pods avec plusieurs interfaces

Jusqu'à présent, nous n'avons préparé qu'une seule carte d'interface réseau virtuelle (qui prend en charge SR-IOV) et avons déplacé cette carte dans un pod. Nous l'avons fait pour quatre dosettes de test différentes.

Et si nous voulons ajouter ou déplacer d'autres VNIC dans un pod particulier ? Vous devez répéter ces étapes :

Dans cette tâche, vous trouverez un exemple dans lequel nous allons créer un sous-réseau supplémentaire, la carte d'interface réseau virtuelle, affecter l'adresse IP, NetworkAttachmentDefinition et l'ajouter au fichier YAML de création de pod pour testpod1.

Tâche 10 : enlever tous les déploiements de pod et NetworkAttachmentDefinitions

Pour recommencer ou nettoyer les conteneurs à l'aide de NetworkAttachmentDefinitions, procédez comme suit :

Accusés de réception

Ressources de formation supplémentaires

Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.