Déployer les applications conteneur d'interfaces réseau SR-IOV sur OKE à l'aide du plugiciel Multus CNI

Présentation

Dans ce tutoriel, nous allons explorer comment déployer des applications en conteneur sur des noeuds de travail d'instance virtuelle dans Oracle Cloud Infrastructure Kubernetes Engine (OKE), en tirant parti des capacités de réseau avancées. Plus précisément, nous activerons la virtualisation à E/S racine unique (SR-IOV) pour les interfaces réseau de conteneur et configurerons le plugiciel Multus CNI pour activer le réseau multi-hôte pour vos conteneurs.

En combinant SR-IOV et Multus, vous pouvez réaliser un réseau haute performance à faible latence pour des charges de travail spécialisées telles que l'IA, l'apprentissage automatique et le traitement de données en temps réel. Ce tutoriel fournit des instructions étape par étape pour configurer votre environnement OKE, déployer des noeuds de travail avec des interfaces activées pour SR-IOV et utiliser Multus CNI pour gérer plusieurs interfaces réseau dans vos pods. Que vous cherchiez à traiter des paquets à grande 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.

Note :

Image

Objectifs

Tâche 1 : Déployer OKE avec un hôte bastion, un opérateur, trois noeuds de travail de machine virtuelle et le plugiciel CNI Flannel

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

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

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

Image

Tâche 2 : Activer le réseau SR-IOV (assistance matérielle) sur chaque noeud de travail

Note : Les étapes suivantes doivent être effectuées sur tous les noeuds de travail qui font partie de la grappe OKE.

L'image suivante présente un aperçu visuel de nos noeuds de travail dans la grappe OKE que nous allons utiliser tout au long de ce tutoriel.

Image

Activer SR-IOV sur l'instance

Tâche 3 : Créer un sous-réseau pour les cartes vNIC SR-IOV activées

Nous allons créer un sous-réseau dédié que nos interfaces 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éer un sous-réseau

Tâche 4 : Ajouter un deuxième attachement de carte VNIC

L'image suivante présente un aperçu visuel de la façon dont les noeuds de travail ont une seule carte VNIC connectée au sous-réseau des noeuds de travail avant d'ajouter une deuxième carte VNIC.

Image

Avant d'ajouter un deuxième attachement de carte VNIC aux noeuds de travail, créez un groupe de sécurité de réseau.

Tâche 4.1 : Créer un groupe de sécurité de réseau

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

Tâche 4.2 : Ajouter la carte VNIC

Tâche 5 : Affecter une adresse IP à la nouvelle deuxième carte VNIC avec une passerelle par défaut

Maintenant que la deuxième carte VNIC 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'est pas activé pour la deuxième interface, l'adresse IP doit donc être affectée manuellement.

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

Pour tous les noeuds de travail, nous avons affecté une adresse IP à la carte vNIC secondaire (ens5). Nous avons utilisé la méthode 3 pour affecter une adresse IP à la carte vNIC secondaire (ens5). Pour plus d'informations sur l'affectation d'une adresse IP à la deuxième carte VNIC, voir Affecter une adresse IP à une deuxième interface sur une instance Oracle Linux.

Une fois l'adresse IP affectée à une carte VNIC, nous devons vérifier si l'adresse IP des deuxièmes cartes VNIC est configurée correctement. Nous pouvons également vérifier si nous avons activé SR-IOV sur tous les noeuds de travail du groupe de noeuds.

Notre cluster OKE se compose de :

Groupe de noeuds  
NP1 1 x noeud de travail
NP2 3 x noeuds de travail

Nous vérifierons tous les noeuds de travail de tous les groupes de noeuds.

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

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

Tâche 6 : Installer un CNI Meta-Plugin (Multus CNI) sur le noeud de travail

Multus CNI est un plugiciel d'interface réseau de conteneurs 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 : Installer Multus CNI à l'aide de la méthode d'installation mince

Ce que fait le démon Multus

Tâche 6.2 : Valider l'installation de Multus

Tâche 7 : Attacher des interfaces réseau à des pods

Dans cette tâche, nous mapperons ou attacherons une interface de conteneur à cette carte VNIC.

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

Il existe plusieurs plugins CNI qui peuvent être utilisés avec Multus pour y parvenir. Pour plus d'informations, voir Aperçu des plugiciels.

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

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

NetworkAttachmentDefinition est utilisé pour configurer l'attachement de réseau, par exemple, l'interface secondaire pour le pod.

Il existe deux façons de configurer NetworkAttachmentDefinition :

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

Nous avons 4 noeuds de travail et chaque noeud de travail a une deuxième carte VNIC que nous mapperons à 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 un pod réel.

Dans le tableau suivant, nous avons créé un mappage sur le pod que nous voulons héberger sur le noeud de travail.

Adresse IP du noeud du travailleur (principal) ens5 nom nom du module de service terminé
10.0.112.134 10.0.3.30/27 sriov-vnic-1 testpod1 OUI
10.0.66.97 10.0.3.15/27 sriov-vnic-2 testpod2 OUI
10.0.73.242 10.0.3.14/27 sriov-vnic-3 testpod3 OUI
10.0.89.50 10.0.3.16/27 sriov-vnic-4 testpod4 OUI

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 NetworkAttachmentDefinition est lié à une adresse IP et cette adresse IP est liée à une carte VNIC et cette carte VNIC est liée à un noeud de travail spécifique. Nous devons donc nous assurer que les pods que nous créons se retrouveront sur le noeud de travail que nous voulons et cela est requis lorsque nous attachons NetworkAttachmentDefinition à un pod.

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

Tâche 7.4 : Vérifier l'adresse IP des pods de test

Tâche 7.5 : Vérifier l'adresse IP sur les noeuds de travail

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 vNIC SR-IOV sont attachées. Nous pouvons effectuer des tests ping pour vérifier si la connectivité réseau fonctionne correctement.

Note : Dans cet exemple, nous utilisons testpod1 pour effectuer une commande ping sur 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 VNIC (qui prend en charge SR-IOV) et déplacé cette carte VNIC dans un pod. Nous l'avons fait pour quatre tests différents.

Que se passe-t-il maintenant si nous voulons ajouter ou déplacer plus de cartes vNIC dans un module de réseautage particulier? Vous devez répéter les étapes suivantes :

Dans cette tâche, vous trouverez un exemple où nous allons créer un sous-réseau supplémentaire, une carte VNIC, affecter l'adresse IP, NetworkAttachmentDefinition et l'ajouter au fichier YAML de création de pod pour testpod1.

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

Si vous voulez recommencer ou nettoyer les conteneurs avec NetworkAttachmentDefinitions, procédez comme suit :

Remerciements

Ressources d'apprentissage supplémentaires

Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

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