24.5. Migrer du plugin réseau SDN d'OpenShift
En tant qu'administrateur de cluster, vous pouvez migrer vers le plugin réseau OVN-Kubernetes à partir du plugin réseau OpenShift SDN.
Pour en savoir plus sur OVN-Kubernetes, lisez À propos du plugin réseau OVN-Kubernetes.
24.5.1. Migration vers le plugin réseau OVN-Kubernetes
La migration vers le plugin réseau OVN-Kubernetes est un processus manuel qui comprend un certain temps d'arrêt pendant lequel votre cluster est inaccessible. Bien qu'une procédure de retour en arrière soit fournie, la migration est conçue pour être un processus à sens unique.
Une migration vers le plugin réseau OVN-Kubernetes est prise en charge sur les plateformes suivantes :
- Matériel métallique nu
- Amazon Web Services (AWS)
- Google Cloud Platform (GCP)
- IBM Cloud
- Microsoft Azure
- Plate-forme Red Hat OpenStack (RHOSP)
- Red Hat Virtualization (RHV)
- VMware vSphere
La migration vers ou depuis le plugin réseau OVN-Kubernetes n'est pas prise en charge pour les services cloud OpenShift gérés tels que OpenShift Dedicated et Red Hat OpenShift Service on AWS (ROSA).
24.5.1.1. Considérations pour la migration vers le plugin réseau OVN-Kubernetes
Si vous avez plus de 150 nœuds dans votre cluster OpenShift Container Platform, ouvrez un dossier de support pour obtenir des conseils sur votre migration vers le plugin réseau OVN-Kubernetes.
Les sous-réseaux attribués aux nœuds et les adresses IP attribuées aux pods individuels ne sont pas conservés pendant la migration.
Bien que le plugin réseau OVN-Kubernetes mette en œuvre de nombreuses fonctionnalités présentes dans le plugin réseau SDN d'OpenShift, la configuration n'est pas la même.
Si votre cluster utilise l'une des capacités suivantes du plugin réseau OpenShift SDN, vous devez configurer manuellement la même capacité dans le plugin réseau OVN-Kubernetes :
- Isolation de l'espace de noms
- Pods de routeurs de sortie
-
Si votre cluster ou le réseau environnant utilise une partie de la plage d'adresses
100.64.0.0/16
, vous devez choisir une autre plage d'adresses IP inutilisée en spécifiant la spécificationv4InternalSubnet
sous la définition de l'objetspec.defaultNetwork.ovnKubernetesConfig
. OVN-Kubernetes utilise par défaut la plage d'adresses IP100.64.0.0/16
en interne.
Les sections suivantes mettent en évidence les différences de configuration entre les capacités susmentionnées dans les plugins réseau OVN-Kubernetes et OpenShift SDN.
Isolation de l'espace de noms
OVN-Kubernetes ne prend en charge que le mode d'isolation de la politique de réseau.
Si votre cluster utilise OpenShift SDN configuré en mode multitenant ou en mode d'isolation de sous-réseau, vous ne pouvez pas migrer vers le plugin réseau OVN-Kubernetes.
Adresses IP de sortie
OpenShift SDN prend en charge deux modes IP de sortie différents :
- Dans cette approche, une plage d'adresses IP de sortie est attribuée à un nœud automatically assigned une plage d'adresses IP de sortie est attribuée à un nœud.
- Dans cette approche, une liste d'une ou plusieurs adresses IP de sortie est attribuée à un nœud manually assigned une liste d'une ou plusieurs adresses IP de sortie est attribuée à un nœud.
Le processus de migration prend en charge la migration des configurations IP de sortie qui utilisent le mode d'attribution automatique.
Les différences dans la configuration d'une adresse IP egress entre OVN-Kubernetes et OpenShift SDN sont décrites dans le tableau suivant :
OVN-Kubernetes | OpenShift SDN |
---|---|
|
|
Pour plus d'informations sur l'utilisation des adresses IP de sortie dans OVN-Kubernetes, voir "Configuration d'une adresse IP de sortie".
Politiques du réseau de sortie
La différence de configuration d'une politique de réseau egress, également connue sous le nom de pare-feu egress, entre OVN-Kubernetes et OpenShift SDN est décrite dans le tableau suivant :
OVN-Kubernetes | OpenShift SDN |
---|---|
|
|
Comme le nom d'un objet EgressFirewall
ne peut être défini que sur default
, après la migration, tous les objets EgressNetworkPolicy
migrés sont nommés default
, quel que soit le nom qu'ils portaient sous OpenShift SDN.
Si vous revenez ensuite à OpenShift SDN, tous les objets EgressNetworkPolicy
sont nommés default
car le nom précédent est perdu.
Pour plus d'informations sur l'utilisation d'un pare-feu de sortie dans OVN-Kubernetes, voir "Configuration d'un pare-feu de sortie pour un projet".
Pods de routeurs de sortie
OVN-Kubernetes supporte les egress router pods en mode redirect. OVN-Kubernetes ne supporte pas les egress router pods en mode proxy HTTP ou DNS.
Lorsque vous déployez un routeur de sortie avec l'opérateur de réseau de cluster, vous ne pouvez pas spécifier de sélecteur de nœud pour contrôler le nœud utilisé pour héberger le module de routeur de sortie.
Multidiffusion
La différence entre l'activation du trafic multicast sur OVN-Kubernetes et OpenShift SDN est décrite dans le tableau suivant :
OVN-Kubernetes | OpenShift SDN |
---|---|
|
|
Pour plus d'informations sur l'utilisation de la multidiffusion dans OVN-Kubernetes, voir "Activation de la multidiffusion pour un projet".
Politiques de réseau
OVN-Kubernetes supporte entièrement l'API Kubernetes NetworkPolicy
dans le groupe d'API networking.k8s.io/v1
. Aucun changement n'est nécessaire dans vos politiques de réseau lors de la migration depuis OpenShift SDN.
24.5.1.2. Comment fonctionne le processus de migration
Le tableau suivant résume le processus de migration en distinguant les étapes du processus initiées par l'utilisateur et les actions que la migration exécute en réponse.
Étapes initiées par l'utilisateur | Activité de migration |
---|---|
Définissez le champ |
|
Mettre à jour le champ |
|
Redémarrez chaque nœud du cluster. |
|
Si un retour en arrière vers OpenShift SDN est nécessaire, le tableau suivant décrit le processus.
Étapes initiées par l'utilisateur | Activité de migration |
---|---|
Suspendre le MCO pour s'assurer qu'il n'interrompt pas la migration. | Le MCO s'arrête. |
Définissez le champ |
|
Mettre à jour le champ |
|
Redémarrez chaque nœud du cluster. |
|
Activer le MCO après le redémarrage de tous les nœuds de la grappe. |
|
24.5.2. Migration vers le plugin réseau OVN-Kubernetes
En tant qu'administrateur de cluster, vous pouvez changer le plugin réseau de votre cluster pour OVN-Kubernetes. Pendant la migration, vous devez redémarrer chaque nœud de votre cluster.
Pendant la migration, votre cluster est indisponible et les charges de travail peuvent être interrompues. N'effectuez la migration que si une interruption de service est acceptable.
Conditions préalables
- Un cluster configuré avec le plugin réseau OpenShift SDN CNI en mode d'isolation de la politique réseau.
-
Installez le CLI OpenShift (
oc
). -
Accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
. - Une sauvegarde récente de la base de données etcd est disponible.
- Un redémarrage peut être déclenché manuellement pour chaque nœud.
- Le cluster est dans un état connu, sans aucune erreur.
Procédure
Pour sauvegarder la configuration du réseau de clusters, entrez la commande suivante :
oc get Network.config.openshift.io cluster -o yaml > cluster-openshift-sdn.yaml
Pour préparer tous les nœuds à la migration, définissez le champ
migration
sur l'objet de configuration Cluster Network Operator en entrant la commande suivante :$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": { "networkType": "OVNKubernetes" } } }'
NoteCette étape ne déploie pas OVN-Kubernetes immédiatement. Au lieu de cela, la spécification du champ
migration
déclenche le Machine Config Operator (MCO) pour appliquer de nouvelles configurations de machine à tous les nœuds du cluster en préparation du déploiement d'OVN-Kubernetes.Facultatif : vous pouvez désactiver la migration automatique de plusieurs fonctionnalités OpenShift SDN vers les équivalents OVN-Kubernetes :
- IP de sortie
- Pare-feu de sortie
- Multidiffusion
Pour désactiver la migration automatique de la configuration pour l'une des fonctionnalités OpenShift SDN mentionnées précédemment, spécifiez les clés suivantes :
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": { "networkType": "OVNKubernetes", "features": { "egressIP": <bool>, "egressFirewall": <bool>, "multicast": <bool> } } } }'
où :
bool
: Spécifie si la migration de la fonctionnalité doit être activée. La valeur par défaut esttrue
.Facultatif : vous pouvez personnaliser les paramètres suivants pour OVN-Kubernetes afin de répondre aux exigences de votre infrastructure réseau :
- Unité de transmission maximale (MTU)
- Geneve (Generic Network Virtualization Encapsulation) port de réseau superposé
- Sous-réseau interne IPv4 d'OVN-Kubernetes
- Sous-réseau interne IPv6 d'OVN-Kubernetes
Pour personnaliser l'un ou l'autre des paramètres susmentionnés, entrez et personnalisez la commande suivante. Si vous n'avez pas besoin de modifier la valeur par défaut, omettez la clé du correctif.
$ oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{ "spec":{ "defaultNetwork":{ "ovnKubernetesConfig":{ "mtu":<mtu>, "genevePort":<port>, "v4InternalSubnet":"<ipv4_subnet>", "v6InternalSubnet":"<ipv6_subnet>" }}}}'
où :
mtu
-
Le MTU pour le réseau superposé de Geneve. Cette valeur est normalement configurée automatiquement, mais si les nœuds de votre cluster n'utilisent pas tous le même MTU, vous devez la définir explicitement à
100
moins que la valeur du MTU du plus petit nœud. port
-
Le port UDP pour le réseau superposé de Geneve. Si aucune valeur n'est spécifiée, la valeur par défaut est
6081
. Le port ne peut pas être le même que le port VXLAN utilisé par OpenShift SDN. La valeur par défaut du port VXLAN est4789
. ipv4_subnet
-
Une plage d'adresses IPv4 à usage interne pour OVN-Kubernetes. Vous devez vous assurer que la plage d'adresses IP ne chevauche pas un autre sous-réseau utilisé par votre installation OpenShift Container Platform. La plage d'adresses IP doit être supérieure au nombre maximum de nœuds pouvant être ajoutés au cluster. La valeur par défaut est
100.64.0.0/16
. ipv6_subnet
-
Une plage d'adresses IPv6 à usage interne pour OVN-Kubernetes. Vous devez vous assurer que la plage d'adresses IP ne chevauche pas un autre sous-réseau utilisé par votre installation OpenShift Container Platform. La plage d'adresses IP doit être supérieure au nombre maximum de nœuds pouvant être ajoutés au cluster. La valeur par défaut est
fd98::/48
.
Exemple de commande de patch pour mettre à jour le champ
mtu
$ oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{ "spec":{ "defaultNetwork":{ "ovnKubernetesConfig":{ "mtu":1200 }}}}'
Lorsque le MCO met à jour les machines de chaque pool de configuration, il redémarre chaque nœud un par un. Vous devez attendre que tous les nœuds soient mis à jour. Vérifiez l'état du pool de configuration des machines en entrant la commande suivante :
$ oc get mcp
Un nœud mis à jour avec succès a le statut suivant :
UPDATED=true
,UPDATING=false
,DEGRADED=false
.NotePar défaut, le MCO met à jour une machine par pool à la fois, ce qui fait que la durée totale de la migration augmente avec la taille du cluster.
Confirmer l'état de la configuration de la nouvelle machine sur les hôtes :
Pour répertorier l'état de la configuration de la machine et le nom de la configuration de la machine appliquée, entrez la commande suivante :
$ oc describe node | egrep "hostname|machineconfig"
Exemple de sortie
kubernetes.io/hostname=master-0 machineconfiguration.openshift.io/currentConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b machineconfiguration.openshift.io/desiredConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b machineconfiguration.openshift.io/reason: machineconfiguration.openshift.io/state: Done
Vérifiez que les affirmations suivantes sont vraies :
-
La valeur du champ
machineconfiguration.openshift.io/state
estDone
. -
La valeur du champ
machineconfiguration.openshift.io/currentConfig
est égale à la valeur du champmachineconfiguration.openshift.io/desiredConfig
.
-
La valeur du champ
Pour confirmer que la configuration de la machine est correcte, entrez la commande suivante :
oc get machineconfig <config_name> -o yaml | grep ExecStart
où
<config_name>
est le nom de la machine configurée dans le champmachineconfiguration.openshift.io/currentConfig
.La configuration de la machine doit inclure la mise à jour suivante de la configuration de systemd :
ExecStart=/usr/local/bin/configure-ovs.sh OVNKubernetes
Si un nœud est bloqué à l'état
NotReady
, examinez les journaux de pods du démon de configuration de la machine et résolvez les erreurs éventuelles.Pour dresser la liste des pods, entrez la commande suivante :
$ oc get pod -n openshift-machine-config-operator
Exemple de sortie
NAME READY STATUS RESTARTS AGE machine-config-controller-75f756f89d-sjp8b 1/1 Running 0 37m machine-config-daemon-5cf4b 2/2 Running 0 43h machine-config-daemon-7wzcd 2/2 Running 0 43h machine-config-daemon-fc946 2/2 Running 0 43h machine-config-daemon-g2v28 2/2 Running 0 43h machine-config-daemon-gcl4f 2/2 Running 0 43h machine-config-daemon-l5tnv 2/2 Running 0 43h machine-config-operator-79d9c55d5-hth92 1/1 Running 0 37m machine-config-server-bsc8h 1/1 Running 0 43h machine-config-server-hklrm 1/1 Running 0 43h machine-config-server-k9rtx 1/1 Running 0 43h
Les noms des modules de démon de configuration sont au format suivant :
machine-config-daemon-<seq>
. La valeur<seq>
est une séquence alphanumérique aléatoire de cinq caractères.Affichez le journal du pod pour le premier pod de démon de configuration de machine montré dans la sortie précédente en entrant la commande suivante :
$ oc logs <pod> -n openshift-machine-config-operator
où
pod
est le nom d'un pod de démon de configuration de machine.- Résoudre les erreurs éventuelles dans les journaux affichés par la sortie de la commande précédente.
Pour démarrer la migration, configurez le plugin réseau OVN-Kubernetes à l'aide d'une des commandes suivantes :
Pour spécifier le fournisseur de réseau sans modifier le bloc d'adresses IP du réseau de la grappe, entrez la commande suivante :
$ oc patch Network.config.openshift.io cluster \ --type='merge' --patch '{ "spec": { "networkType": "OVNKubernetes" } }'
Pour spécifier un autre bloc d'adresses IP du réseau cluster, entrez la commande suivante :
$ oc patch Network.config.openshift.io cluster \ --type='merge' --patch '{ "spec": { "clusterNetwork": [ { "cidr": "<cidr>", "hostPrefix": <prefix> } ], "networkType": "OVNKubernetes" } }'
où
cidr
est un bloc CIDR etprefix
est la tranche du bloc CIDR attribuée à chaque nœud de votre cluster. Vous ne pouvez pas utiliser un bloc CIDR qui chevauche le bloc CIDR100.64.0.0/16
car le fournisseur de réseau OVN-Kubernetes utilise ce bloc en interne.ImportantVous ne pouvez pas modifier le bloc d'adresses du réseau de service pendant la migration.
Vérifiez que le déploiement du jeu de démons Multus est terminé avant de passer aux étapes suivantes :
$ oc -n openshift-multus rollout status daemonset/multus
Le nom des nacelles Multus se présente sous la forme
multus-<xxxxx>
, où<xxxxx>
est une séquence aléatoire de lettres. Le redémarrage des pods peut prendre quelques instants.Exemple de sortie
Waiting for daemon set "multus" rollout to finish: 1 out of 6 new pods have been updated... ... Waiting for daemon set "multus" rollout to finish: 5 of 6 updated pods are available... daemon set "multus" successfully rolled out
Pour terminer la migration, redémarrez chaque nœud de votre cluster. Par exemple, vous pouvez utiliser un script bash similaire à l'exemple suivant. Le script suppose que vous pouvez vous connecter à chaque hôte en utilisant
ssh
et que vous avez configurésudo
pour ne pas demander de mot de passe.#!/bin/bash for ip in $(oc get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}') do echo "reboot node $ip" ssh -o StrictHostKeyChecking=no core@$ip sudo shutdown -r -t 3 done
Si l'accès ssh n'est pas disponible, vous pourrez peut-être redémarrer chaque nœud via le portail de gestion de votre fournisseur d'infrastructure.
Confirmez que la migration a réussi :
Pour confirmer que le plugin réseau est OVN-Kubernetes, entrez la commande suivante. La valeur de
status.networkType
doit êtreOVNKubernetes
.$ oc get network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'
Pour confirmer que les nœuds du cluster sont dans l'état
Ready
, entrez la commande suivante :$ oc get nodes
Pour confirmer que vos pods ne sont pas dans un état d'erreur, entrez la commande suivante :
$ oc get pods --all-namespaces -o wide --sort-by='{.spec.nodeName}'
Si les pods d'un nœud sont dans un état d'erreur, redémarrez ce nœud.
Pour confirmer que tous les opérateurs du cluster ne sont pas dans un état anormal, entrez la commande suivante :
$ oc get co
L'état de chaque opérateur de cluster doit être le suivant :
AVAILABLE="True"
,PROGRESSING="False"
,DEGRADED="False"
. Si un opérateur de cluster n'est pas disponible ou est dégradé, vérifiez les journaux de l'opérateur de cluster pour plus d'informations.
N'effectuez les étapes suivantes que si la migration a réussi et que votre cluster est en bon état :
Pour supprimer la configuration de la migration de l'objet de configuration CNO, entrez la commande suivante :
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": null } }'
Pour supprimer la configuration personnalisée du fournisseur de réseau OpenShift SDN, entrez la commande suivante :
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "defaultNetwork": { "openshiftSDNConfig": null } } }'
Pour supprimer l'espace de noms du fournisseur de réseau OpenShift SDN, entrez la commande suivante :
$ oc delete namespace openshift-sdn
24.5.3. Ressources supplémentaires
- Paramètres de configuration du plugin réseau OVN-Kubernetes
- Sauvegarde de etcd
- A propos de la politique de réseau
Capacités OVN-Kubernetes
Capacités SDN d'OpenShift
- Réseau [operator.openshift.io/v1]