Gestion des interfaces réseau virtuelles pour la virtualisation OpenShift
Cloud privé virtuel 4.20 et plus tard Nœuds de travail en métal nu uniquement RHCOS uniquement OVN- Kubernetes CNI nécessaire
Vous pouvez utiliser des interfaces réseau virtuelles (VNI) pour permettre une connectivité réseau avancée pour les machines virtuelles (VM) fonctionnant sur les clusters Red Hat OpenShift on IBM Cloud avec OpenShift Virtualization.
Comprendre les interfaces réseau virtuelles
Une interface de réseau virtuel (VNI) est une abstraction VPC IBM Cloud qui représente des connexions réseau individuelles. Les VNI intègrent les propriétés d'une connexion réseau, telles que les adresses IP, les adresses MAC et le sous-réseau VPC auquel elles appartiennent.
Les VNI ne sont disponibles que sur les clusters dotés de nœuds de travail en métal nu.
Red Hat OpenShift on IBM Cloud utilise des attachements réseau basés sur VNI pour permettre une connectivité flexible entre les charges de travail s'exécutant sur le cluster et en dehors de celui-ci. Les VNI permettent l'exposition directe au
réseau des machines virtuelles (VM) basées sur la virtualisation OpenShift au réseau VPC en utilisant les réseaux définis par l'utilisateur OVN (UDN) avec la topologie Localnet. Avec les VNI attachés aux nœuds de travail en métal
nu, les migrations en direct des VM peuvent préserver les connexions réseau, car le VNI peut implicitement flotter et suivre la charge de travail VM entre les instances de travail en métal nu au sein de la même zone.
Fonctions principales
- VNI statiques par nœud de travail
- Lorsque vous créez un cluster Red Hat OpenShift on IBM Cloud basé sur du métal nu ou un nouveau pool de travailleurs dans IBM Cloud VPC, deux VNI sont automatiquement créées et attachées statiquement à chaque nœud de travailleur basé sur du métal nu. Un VNI gère le trafic régulier des travailleurs (réseau de pods, UDNs superposés et communication avec le maître). Le deuxième VNI sert de support aux attachements dynamiques de VNI que vous gérez.
- Pièces jointes dynamiques du VNI
- Vous pouvez créer et gérer des VNI à la demande après la création d'un cluster. Les VNI dynamiques peuvent être attachés à des travailleurs spécifiques ou configurés pour flotter entre les travailleurs d'une même zone, en suivant VM les charges de travail pendant la migration en direct.
- Assistance à la migration en direct
- Avec les VNI attachés à des nœuds de travail en métal nu, les migrations en direct des VM basées sur la virtualisation OpenShift peuvent préserver les connexions réseau. Le VNI flotte implicitement et suit la charge de travail entre les instances de travail en métal nu au sein de la même zone.
Pour les limitations et considérations importantes concernant les VNI, voir Limitations et considérations.
Rattachement de comptes croisés
Sur Red Hat OpenShift on IBM Cloud, les nœuds de travail ne sont pas provisionnés dans votre compte, ce qui signifie que la gestion du cycle de vie des VNI est légèrement différente de celle des instances de métal nu des VPC autonomes. L'administrateur du cluster Red Hat OpenShift on IBM Cloud n'a pas la même visibilité sur les pièces jointes des VNI car elles sont attachées à des charges de travail qui ne sont pas visibles dans le compte. Les différences dans la gestion des VNI sont couvertes dans cette documentation.
Pour plus d'informations sur les VNI sur les instances VPC bare metal autonomes, voir À propos des interfaces réseau virtuelles.
Limites et considérations
- Modifications statiques du VNI
- Ne modifiez pas les VNI statiques qui sont automatiquement créés pour chaque nœud de travailleur. Bien que ces VNI soient visibles dans votre compte VPC, toute modification de leurs paramètres n'est pas prise en charge. Il s'agit notamment d'attacher des IP flottantes, de changer les groupes de sécurité ou de modifier toute autre propriété de VNI. La modification des VNI statiques peut entraîner des problèmes de connectivité entre les clusters.
- Restrictions de modification de la VNI pour les pièces jointes flottantes
- Vous ne pouvez pas modifier les propriétés des VNI pour les attachements dynamiques flottants (à l'échelle d'un cluster). Il s'agit notamment de modifier le nom du VNI, les adresses IP flottantes, les paramètres NAT de l'infrastructure et les attributions de groupes de sécurité. Pour mettre à jour ces paramètres, vous devez d'abord détacher la VNI, effectuer vos modifications, puis la rattacher au cluster. Cette limitation est temporaire.
- Contraintes de zone
- Les VNI sont attachés à un sous-réseau VPC spécifique et ne peuvent pas flotter entre les zones. Dans les clusters multi-zones Red Hat OpenShift on IBM Cloud, les VNI ne peuvent gérer le trafic que pour les charges de travail exécutées sur les travailleurs du cluster dans la même zone que celle où la VNI est provisionnée. Cela signifie également que vous devez éviter OpenShift Virtualization VM la migration en direct entre les zones lorsque le VM spécifique utilise un VNI sur un UDN Localnet.
- Exigences en matière de métal nu
- Les VNI ne sont prises en charge que sur les nœuds de travail en métal nu. Les nœuds de travail des instances de serveurs virtuels (VSI) ne prennent pas en charge les VNI.
- Exigence du RHCOS
- Les nœuds de travail doivent utiliser le système d'exploitation Red Hat CoreOS (RHCOS).
- OVN- Kubernetes CNI
- Les clusters doivent utiliser le plugin OVN- Kubernetes Container Network Interface (CNI).
- Exigence de version
- La prise en charge de VNI nécessite OpenShift 4.20 ou une version ultérieure.
- Localnet Restrictions UDN
- Les UDN Localnet ont la gestion des adresses IP (IPAM) désactivée du côté de l'OVN, ce qui signifie que l'attribution statique d'adresses IP aux pods ne se fait pas à partir de l'OVN. Cette configuration est conçue pour les charges de travail VM qui utilisent DHCP ou configurent des IP statiques dans le système d'exploitation invité. Les pods ordinaires ne peuvent pas être attachés à des UDN localnet.
Prérequis
Avant de commencer, assurez-vous de disposer des ressources et des autorisations suivantes.
- Un cluster Red Hat OpenShift on IBM Cloud à la version 4.20 ou ultérieure avec des nœuds de travail en métal nu
- Infrastructure VPC avec création de VNI
- Système d'exploitation RHCOS sur les nœuds de travail
- OpenShift Opérateur de virtualisation installé
- Stockage configuré pour la virtualisation OpenShift
- Le rôle d'accès à la plate-forme de l'opérateur pour Kubernetes Service dans IBM Cloud IAM
- Le rôle d'accès à la plateforme de l'éditeur ou de l 'administrateur pour les services d'infrastructure VPC dans IBM Cloud IAM
- Autoriser l'accès aux comptes listés pour les fonctions VNI
- OVN- Kubernetes CNI (nécessaire pour la prise en charge de VNI dans 4.20 +)
Pour des informations générales sur les configurations multi-réseaux, voir la documentation sur les réseaux multiples à l'adresse Red Hat OpenShift.
Création d'UDN superposés pour les Pods et les VMs
Vous pouvez créer des réseaux superposés définis par l'utilisateur pour les pods ou les charges de travail VM. L'expérience de l'interface utilisateur de la console OpenShift pour les réseaux définis par l'utilisateur est sujette à des changements avec les dernières versions. Les exemples de cette documentation utilisent des définitions YAML pour faciliter la réutilisation.
Création d'un UDN primaire
Pour utiliser un réseau primaire défini par l'utilisateur pour les pods ou la charge de travail VM, il faut d'abord créer l'UDN lui-même.
Exemple de réseau défini par l'utilisateur d'un cluster qui peut être utilisé dans plusieurs espaces de noms :
apiVersion: k8s.ovn.org/v1
kind: ClusterUserDefinedNetwork
metadata:
name: primary
spec:
namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: green
network:
layer2:
ipam:
lifecycle: Persistent
role: Primary
subnets:
- 10.0.0.0/24
topology: Layer2
Ensuite, créez le(s) espace(s) de noms qui l'utiliseront. L'espace de noms doit contenir un label spécifique (appelé k8s.ovn.org/primary-user-defined-network) lors de sa création pour l'utilisation de l'UDN primaire.
Exemple :
kind: Namespace
apiVersion: v1
metadata:
name: green
labels:
k8s.ovn.org/primary-user-defined-network: ''
Une fois le (C)UDN et les espaces de noms en place, toute charge de travail créée dans cet espace de noms accèdera à l'UDN par la route par défaut.
Création d'un UDN secondaire
La configuration de l'UDN secondaire est similaire à celle de l'UDN primaire, mais le rôle est défini sur Secondary. Pour plus d'informations, voir la documentation sur les réseaux multiples à l'adresse Red Hat OpenShift.
Exposer les machines virtuelles avec les équilibreurs de charge VPC
Vous pouvez exposer les machines virtuelles sans utiliser l'UDN ou le VNI localnet en utilisant des équilibreurs de charge d'application VPC. Pour plus d'informations sur la configuration des équilibreurs de charge, voir À propos des équilibreurs de charge VPC.
Mise en place de réseaux locaux définis par l'utilisateur (localnet)
Les UDN Localnet nécessitent une préparation du réseau OVN du cluster Red Hat OpenShift on IBM Cloud. Sur les nœuds de cluster en métal nu, les deux interfaces réseau statiques ont des noms prévisibles sur le système d'exploitation hôte. L'interface
réseau dédiée à l'acheminement du trafic des interfaces dynamiques attachées est appelée eth1. L'utilisation de Localnet nécessite la création d'un pont OVS dédié sur les nœuds du cluster bare metal, au-dessus de eth1.
Préparez un ID VLAN que vous utiliserez pour attacher les VNI. Il y sera également fait référence dans la ressource CUDN.
Installation de l'opérateur NMState
OpenShift Service de virtualisation Les clusters intègrent l'opérateur NMState, qui est géré par le module complémentaire « openshift-virtualization ». Ignorez
cette étape si vous utilisez le service de virtualisation.
-
Déployez l'opérateur NMState à partir de OperatorHub dans la console Red Hat OpenShift on IBM Cloud ou en utilisant le CLI.
-
Créer une instance de NMState avec la configuration par défaut.
apiVersion: nmstate.io/v1 kind: NMState metadata: name: nmstate spec: probeConfiguration: dns: host: root-servers.net
Création du pont OVS
OpenShift Service de virtualisation Les clusters disposent des ressources NNCP requises, préconfigurées. Vous ne devez créer ces ressources manuellement que pour les clusters standard d' OpenShift s dont l'installation de Virtualization s'effectue manuellement via OpenShift.
-
Créez un pont OVS dédié auquel
eth1est attaché en déployant la ressource personnalisée NMState suivante.apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: "br-eth1" spec: desiredState: interfaces: - name: "br-eth1" description: A dedicated OVS bridge with a NIC as a port type: ovs-bridge state: up bridge: allow-extra-patch-ports: true options: stp: false port: - name: "eth1" -
Vérifiez l'état de la ressource personnalisée et attendez que tous les nœuds de cluster concernés réconcilient la demande de création de pont.
-
Patch le nouveau pont OVS avec le pont par défaut en créant la ressource personnalisée NMState suivante. Remplacez
vpc-vlanspar le nom de votre réseau.apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: "vpc-vlans" spec: desiredState: ovn: bridge-mappings: - localnet: "vpc-vlans" bridge: "br-eth1" state: present -
Vérifiez l'état de la ressource personnalisée et attendez que tous les nœuds de cluster concernés réconcilient la demande de mappage de pont.
Création d'un réseau localnet défini par l'utilisateur
Créer un UDN ou ClusterUserDefinedNetwork (CUDN) qui met à disposition le trafic des VNI en utilisant le VLAN sélectionné.
apiVersion: k8s.ovn.org/v1
kind: ClusterUserDefinedNetwork
metadata:
name: "vlan250"
spec:
namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: In
values:
- "default"
network:
topology: Localnet
localnet:
role: "Secondary"
physicalNetworkName: "vpc-vlans"
ipam:
mode: Disabled
vlan:
mode: Access
access:
id: 250
Remplacez les valeurs suivantes :
vlan250: Le nom de votre CUDNdefault: L'espace de noms dans lequel vous souhaitez utiliser le CUDNvpc-vlans: Le nom du réseau physique que vous avez défini dans le mappage du pont250: ID VLAN souhaité (plage : 1-500)
Ceci conclut la plomberie réseau d'un VLAN spécifique. Vous pouvez définir plusieurs CUDN en utilisant différents ID VLAN tout en réutilisant les mappages de ponts.
IBM Cloud Après avoir terminé la configuration de l'UDN localnet, vous pouvez attacher des VNI au cluster en utilisant la console IBM Cloud ou la commande CLI ks vni. Voir les exemples dans les sections suivantes.
Attacher des VNI à votre cluster
Après avoir configuré l'UDN localnet, vous pouvez attacher des VNI à votre cluster en utilisant la console IBM Cloud ou le CLI.
Avant de commencer
-
Créez des VNI dans votre VPC avec la configuration de sous-réseau et d'adresse IP appropriée.
-
Assurez-vous que vous disposez des autorisations nécessaires pour gérer à la fois le cluster et les VNI.
Attacher un VNI à partir de la console
Vous pouvez attacher une interface utilisateur virtuelle à un nœud de travail spécifique (non flottant) ou au cluster (flottant). Les VNI flottants peuvent suivre les charges de travail entre les travailleurs d'une même zone.
Les VNI, les sous-réseaux et les nœuds de travail sont des ressources zonales. La zone de calcul VNI doit correspondre à la zone de travail sélectionnée. Pour les pièces jointes flottantes, la zone du VNI est supposée, et la pièce jointe flottante est également soumise à la contrainte de zone. Les VNI peuvent être rattachés à des sous-réseaux arbitraires, mais uniquement à l'intérieur du même VPC que le cluster.
-
Dans la console Red Hat OpenShift on IBM Cloud clusters, sélectionnez votre cluster.
-
Dans le menu de navigation, cliquez sur Mise en réseau > Pièces jointes VNI.
-
Cliquez sur Attach VNIs.
-
Dans le panneau Attacher des VNI, configurez les paramètres suivants :
- Sous-réseau: Sélectionnez le sous-réseau dans lequel se trouve votre VNI. Seuls les sous-réseaux situés dans la même zone que vos nœuds de travail sont disponibles.
- Nœud de travail: Sélectionnez un nœud de travail spécifique auquel attacher la VNI ou sélectionnez Tous les nœuds de travail pour créer une VNI flottante qui peut suivre les charges de travail entre les travailleurs d'une même zone.
- VNI: Sélectionnez le VNI à attacher parmi les VNI disponibles dans le sous-réseau sélectionné.
- VLAN ID: Saisissez l'ID VLAN (plage : 1-500) qui correspond à votre configuration UDN localnet.
- Suppression automatique: Facultatif. Sélectionnez cette option pour supprimer automatiquement l'interface utilisateur virtuel lorsqu'elle est retirée du cluster.
-
Cliquez sur Associer.
Attacher une VNI à partir de la CLI
Vous pouvez attacher une interface utilisateur virtuelle à un nœud de travail spécifique (non flottant) ou au cluster (flottant). Les VNI flottants peuvent suivre les charges de travail entre les travailleurs d'une même zone.
Les VNI, les sous-réseaux et les nœuds de travail sont des ressources zonales. La zone de calcul VNI doit correspondre à la zone de travail sélectionnée. Pour les pièces jointes flottantes, la zone du VNI est supposée, et la pièce jointe flottante est également soumise à la contrainte de zone. Les VNI peuvent être rattachés à des sous-réseaux arbitraires, mais uniquement à l'intérieur du même VPC que le cluster.
Pour attacher une interface utilisateur virtuelle à un nœud de travail spécifique, exécutez la commande suivante.
ibmcloud ks vni attach baremetal --worker WORKER_ID --vni VNI_ID --vlan VLAN_ID [--auto-delete]
Pour attacher un VNI flottant au cluster, exécutez la commande suivante.
ibmcloud ks vni attach baremetal --cluster-id CLUSTER_ID --vni VNI_ID --vlan VLAN_ID [--auto-delete]
--worker WORKER_ID- L'identifiant du nœud de travail. Pour dresser la liste des identifiants des travailleurs, exécutez
ibmcloud ks workers --cluster CLUSTER. --cluster-id CLUSTER_ID- L'identifiant du cluster. Pour lister les ID de cluster, exécutez
ibmcloud ks clusters. --vni VNI_ID- L'ID du VNI à rattacher.
--vlan VLAN_ID- L'ID VLAN pour la pièce jointe (plage : 1-500). Il doit correspondre à l'ID VLAN de votre configuration CUDN.
--auto-delete- Facultatif : Supprimez automatiquement l'interface utilisateur virtuel lorsqu'elle est supprimée du cluster.
Exemple
ibmcloud ks vni attach baremetal --vni 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba --worker kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123 --vlan 251
Exemple de sortie
OK
Successfully attached VNI 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba to worker node kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123.
Worker Node ID VNI ID VLAN ID
kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba 251
Visualisation des pièces jointes à la VNI
Vous pouvez visualiser les pièces jointes VNI à partir de la console IBM Cloud ou en utilisant le CLI.
Visualisation des pièces jointes VNI à partir de la console
-
Dans la console Red Hat OpenShift on IBM Cloud clusters, sélectionnez votre cluster.
-
Dans le menu de navigation, cliquez sur Mise en réseau > Pièces jointes VNI.
-
La page Attachements d'interface de réseau virtuel affiche un tableau contenant les informations suivantes pour chaque interface de réseau virtuel attachée :
- VNI name: Le nom de l'interface réseau virtuelle
- Nom du nœud de travail: le nœud de travail auquel le VNI est rattaché, ou indique s'il s'agit d'un rattachement flottant
- Sous-réseau: Le sous-réseau VPC associé à l'interface VNI
- VLAN ID: L'ID VLAN utilisé pour l'attachement
- Primary IP: L'adresse IP primaire du VNI
-
Facultatif : Utilisez les filtres en haut de la page pour filtrer les VNI par sous-réseau ou par nœud de travail.
Visualisation des pièces jointes VNI à partir de l'interface de gestion
Pour dresser la liste de tous les VNI attachés à un cluster, exécutez la commande suivante.
ibmcloud ks vni ls --cluster-id CLUSTER_ID
Pour dresser la liste des VNI attachées à un travailleur spécifique, exécutez la commande suivante.
ibmcloud ks vni ls --worker WORKER_ID
Exemple de sortie
ibmcloud ks vni ls --cluster-id c9pqfcmw0tq431jdnrrg
OK
VNI ID Worker Node IP Address MAC Address VLAN Floating Auto-delete
0716-d97d3626-acb2-476b-8b12-bcafa1dec5bb kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000456 10.240.1.5 02:00:02:00:73:A5 250 - false
0716-aac49630-f3b4-4ef6-9a3a-5145481697ba kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123 10.240.1.4 02:00:01:00:73:A5 251 - false
Détachement des VNI
Vous pouvez détacher des VNI à partir de la console IBM Cloud ou en utilisant le CLI.
Détacher les VNI de la console
-
Dans la console Red Hat OpenShift on IBM Cloud clusters, sélectionnez votre cluster.
-
Dans le menu de navigation, cliquez sur Mise en réseau > Pièces jointes VNI.
-
Dans le tableau des attachements d'interface réseau virtuelle, recherchez l'interface réseau virtuelle que vous souhaitez détacher.
-
Cliquez sur l'icône du menu d'actions (⋯) de la VNI et sélectionnez Détacher.
-
Dans la boîte de dialogue de confirmation, cliquez sur Détacher pour confirmer l'action.
Détacher les VNI de l'interface de programmation
Pour détacher un VNI d'un nœud de travail, vous devez spécifier à la fois l'ID du VNI et l'ID du travailleur.
ibmcloud ks vni detach --worker WORKER_ID --vni VNI_ID
Pour les VNI flottants, il faut d'abord répertorier les VNI pour trouver l'ID du travailleur actuel, puis se détacher en utilisant cet ID de travailleur.
Exemple
ibmcloud ks vni detach --vni 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba --worker kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123
Detach VNI 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba from worker node kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123? This action cannot be undone. [y/N]> y
OK
Successfully detached VNI 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba from worker node kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123.
Utilisation des VNI avec la virtualisation OpenShift
Après avoir attaché les VNI et configuré les UDN localnet, vous pouvez les utiliser avec les VM de virtualisation OpenShift.
-
Créez des VM avec OpenShift Virtualization et ajoutez le CUDN comme réseau secondaire. Les pièces jointes des réseaux locaux ne peuvent pas être utilisées comme réseaux primaires. Vous pouvez utiliser la console OpenShift pour ajouter la pièce jointe.
-
Indiquez l'adresse MAC de la pièce jointe pour permettre au système d'exploitation VM d'obtenir son adresse IP à l'aide de DHCP. Vous pouvez également attribuer l'adresse IP de la VNI de manière statique à l'interface réseau correspondante sur le site VM.
Pour plus d'informations sur la création et la gestion des machines virtuelles, consultez la documentation suivante : Red Hat:
Dépannage des VNI
Pourquoi ne puis-je pas attacher des pods ordinaires à des UDN localnet?
Les UDN Localnet ont la gestion des adresses IP (IPAM) désactivée du côté de l'OVN, ce qui signifie que l'attribution statique d'adresses IP aux pods ne se fait pas à partir de l'OVN. Cette configuration est conçue pour les charges de travail VM qui utilisent DHCP ou configurent des IP statiques dans le système d'exploitation invité. Ces options ne sont pas disponibles pour les charges de travail en pods.
Pourquoi la migration en direct est-elle en attente dans les pools de travailleurs?
Différents groupes de travailleurs peuvent avoir différentes saveurs de travailleurs avec des CPU de différentes générations et capacités. Si l'ensemble des fonctionnalités du CPU est visible de manière transparente pour la charge de travail VM, vous ne pouvez pas migrer le site VM vers un autre travailleur qui ne prend pas en charge toutes les fonctionnalités du CPU. Vous pouvez limiter les caractéristiques visibles de l'unité centrale du système d'exploitation invité au début afin d'obtenir une meilleure compatibilité entre les différents types de travailleurs.
Pourquoi les VNI dynamiques attachés ne fonctionnent-ils pas?
Vérifiez les points suivants :
- Vérifiez que l'ID VLAN dans le CUDN correspond à l'ID VLAN dans l'attachement VNI. Le VPC DHCP peut encore fonctionner sans trafic supplémentaire si le VLAN n'est pas adapté.
- Si le flottement n'est pas activé, assurez-vous que la charge de travail est planifiée sur le travailleur auquel la VNI est attachée.
- Vérifiez que le pont OVS dédié et le mappage sont présents sur les travailleurs. Vérifier l'état de la ressource NodeNetworkConfigurationPolicy.