Chapitre 24. Plugin réseau OVN-Kubernetes
24.1. À propos du plugin réseau OVN-Kubernetes
Le cluster OpenShift Container Platform utilise un réseau virtualisé pour les réseaux de pods et de services.
Faisant partie de Red Hat OpenShift Networking, le plugin réseau OVN-Kubernetes est le fournisseur de réseau par défaut pour OpenShift Container Platform. OVN-Kubernetes est basé sur Open Virtual Network (OVN) et fournit une implémentation de réseau basée sur la superposition. Un cluster qui utilise le plugin OVN-Kubernetes exécute également Open vSwitch (OVS) sur chaque nœud. OVN configure OVS sur chaque nœud pour mettre en œuvre la configuration réseau déclarée.
OVN-Kubernetes est la solution de mise en réseau par défaut pour OpenShift Container Platform et les déploiements OpenShift à nœud unique.
OVN-Kubernetes, issu du projet OVS, utilise un grand nombre des mêmes constructions, telles que les règles de flux ouvertes, pour déterminer comment les paquets voyagent à travers le réseau. Pour plus d'informations, consultez le site web de l'Open Virtual Network.
OVN-Kubernetes est une série de démons pour OVS qui traduisent les configurations de réseaux virtuels en règles OpenFlow
. OpenFlow
est un protocole de communication avec les commutateurs et les routeurs de réseau, fournissant un moyen de contrôler à distance le flux du trafic réseau sur un périphérique de réseau, permettant aux administrateurs de réseau de configurer, de gérer et de surveiller le flux du trafic réseau.
OVN-Kubernetes offre davantage de fonctionnalités avancées qui ne sont pas disponibles sur OpenFlow
. OVN prend en charge le routage virtuel distribué, les commutateurs logiques distribués, le contrôle d'accès, le DHCP et le DNS. OVN met en œuvre le routage virtuel distribué dans des flux logiques qui équivalent à des flux ouverts. Par exemple, si vous avez un pod qui envoie une requête DHCP sur le réseau, il envoie une diffusion à la recherche d'une adresse DHCP, il y aura une règle de flux logique qui correspondra à ce paquet et qui répondra en lui donnant une passerelle, un serveur DNS, une adresse IP et ainsi de suite.
OVN-Kubernetes exécute un démon sur chaque nœud. Il existe des ensembles de démons pour les bases de données et pour le contrôleur OVN qui s'exécutent sur chaque nœud. Le contrôleur OVN programme le démon Open vSwitch sur les nœuds pour prendre en charge les fonctionnalités du fournisseur de réseau : IP de sortie, pare-feu, routeurs, réseau hybride, cryptage IPSEC, IPv6, politique de réseau, journaux de politique de réseau, délestage matériel et multidiffusion.
24.1.1. Objectif OVN-Kubernetes
Le plugin réseau OVN-Kubnernetes est un plugin CNI Kubernetes open-source et entièrement fonctionnel qui utilise Open Virtual Network (OVN) pour gérer les flux de trafic réseau. OVN est une solution de virtualisation de réseau développée par la communauté et agnostique vis-à-vis des fournisseurs. Le plugin réseau OVN-Kubnernetes :
- Utilise OVN (Open Virtual Network) pour gérer les flux de trafic du réseau. OVN est une solution de virtualisation de réseau développée par la communauté et indépendante des fournisseurs.
- Met en œuvre la prise en charge de la politique réseau de Kubernetes, y compris les règles d'entrée et de sortie.
- Utilise le protocole Geneve (Generic Network Virtualization Encapsulation) plutôt que VXLAN pour créer un réseau superposé entre les nœuds.
Le plugin réseau OVN-Kubernetes présente les avantages suivants par rapport à OpenShift SDN.
- Prise en charge complète des réseaux IPv6 à pile unique et IPv4/IPv6 à double pile sur les plates-formes prises en charge
- Prise en charge des clusters hybrides avec des charges de travail Linux et Microsoft Windows
- Cryptage IPsec facultatif des communications à l'intérieur du cluster
- Déchargement du traitement des données réseau de l'unité centrale vers des cartes réseau et des unités de traitement des données (DPU) compatibles
24.1.2. Matrice des caractéristiques des plugins réseau pris en charge
Red Hat OpenShift Networking offre deux options pour le plugin réseau, OpenShift SDN et OVN-Kubernetes, pour le plugin réseau. Le tableau suivant résume la prise en charge actuelle des fonctionnalités pour les deux plugins réseau :
Fonctionnalité | OVN-Kubernetes | OpenShift SDN |
---|---|---|
IP de sortie | Soutenu | Soutenu |
Pare-feu de sortie [1] | Soutenu | Soutenu |
Routeur de sortie | Soutenu [2] | Soutenu |
Réseau hybride | Soutenu | Non pris en charge |
Cryptage IPsec pour les communications à l'intérieur du cluster | Soutenu | Non pris en charge |
IPv6 | Soutenu [3] | Non pris en charge |
Politique de réseau Kubernetes | Soutenu | Soutenu |
Journaux de la politique réseau de Kubernetes | Soutenu | Non pris en charge |
Déchargement du matériel | Soutenu | Non pris en charge |
Multidiffusion | Soutenu | Soutenu |
- Le pare-feu de sortie est également connu sous le nom de politique de réseau de sortie dans OpenShift SDN. Ce n'est pas la même chose que la politique de réseau de sortie.
- Le routeur de sortie pour OVN-Kubernetes ne prend en charge que le mode de redirection.
- IPv6 n'est pris en charge que sur les clusters bare metal, IBM Power et IBM zSystems.
24.1.3. OVN-Kubernetes IPv6 et limitations de la double pile
Le plugin réseau OVN-Kubernetes a les limitations suivantes :
Pour les clusters configurés pour un réseau à double pile, le trafic IPv4 et IPv6 doit utiliser la même interface réseau comme passerelle par défaut. Si cette condition n'est pas remplie, les modules sur l'hôte dans l'ensemble de démons
ovnkube-node
entrent dans l'étatCrashLoopBackOff
. Si vous affichez un pod avec une commande telle queoc get pod -n openshift-ovn-kubernetes -l app=ovnkube-node -o yaml
, le champstatus
contient plus d'un message sur la passerelle par défaut, comme le montre la sortie suivante :I1006 16:09:50.985852 60651 helper_linux.go:73] Found default gateway interface br-ex 192.168.127.1 I1006 16:09:50.985923 60651 helper_linux.go:73] Found default gateway interface ens4 fe80::5054:ff:febe:bcd4 F1006 16:09:50.985939 60651 ovnkube.go:130] multiple gateway interfaces detected: br-ex ens4
La seule solution consiste à reconfigurer le réseau de l'hôte de manière à ce que les deux familles IP utilisent la même interface réseau pour la passerelle par défaut.
Pour les clusters configurés pour un réseau à double pile, les tables de routage IPv4 et IPv6 doivent contenir la passerelle par défaut. Si cette condition n'est pas remplie, les modules sur l'hôte dans l'ensemble de démons
ovnkube-node
entrent dans l'étatCrashLoopBackOff
. Si vous affichez un pod avec une commande telle queoc get pod -n openshift-ovn-kubernetes -l app=ovnkube-node -o yaml
, le champstatus
contient plus d'un message sur la passerelle par défaut, comme le montre la sortie suivante :I0512 19:07:17.589083 108432 helper_linux.go:74] Found default gateway interface br-ex 192.168.123.1 F0512 19:07:17.589141 108432 ovnkube.go:133] failed to get default gateway interface
La seule solution consiste à reconfigurer le réseau de l'hôte de manière à ce que les deux familles IP contiennent la passerelle par défaut.
24.1.4. Affinité de session
L'affinité de session est une fonctionnalité qui s'applique aux objets Kubernetes Service
. Vous pouvez utiliser session affinity si vous voulez vous assurer qu'à chaque fois que vous vous connectez à un <service_VIP>:<Port>, le trafic est toujours équilibré en charge vers le même back-end. Pour plus d'informations, notamment sur la manière de définir l'affinité de session en fonction de l'adresse IP d'un client, voir Affinité de session.
Délai d'attente pour l'affinité de session
Le plugin réseau OVN-Kubernetes pour OpenShift Container Platform calcule le délai d'attente pour une session à partir d'un client sur la base du dernier paquet. Par exemple, si vous exécutez la commande curl
10 fois, le délai de la session collante commence à partir du dixième paquet et non du premier. Par conséquent, si le client contacte continuellement le service, la session n'est jamais interrompue. Le délai d'attente démarre lorsque le service n'a pas reçu de paquet pendant la durée définie par le paramètre timeoutSeconds
paramètre.