24.6. Revenir au fournisseur de réseau SDN OpenShift
En tant qu'administrateur de cluster, vous pouvez revenir au plugin réseau OpenShift SDN à partir du plugin réseau OVN-Kubernetes si la migration vers OVN-Kubernetes échoue.
24.6.1. Repousser le plugin réseau vers OpenShift SDN
En tant qu'administrateur de cluster, vous pouvez revenir sur votre cluster avec le plugin réseau OpenShift SDN Container Network Interface (CNI). Pendant le rollback, vous devez redémarrer chaque nœud de votre cluster.
Ne revenir à OpenShift SDN que si la migration vers OVN-Kubernetes échoue.
Conditions préalables
-
Installez le CLI OpenShift (
oc
). -
Accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
. - Un cluster installé sur une infrastructure configurée avec le plugin réseau OVN-Kubernetes.
Procédure
Arrêter tous les pools de configuration de machines gérés par le MCO (Machine Config Operator) :
Arrêter le pool de configuration maître :
$ oc patch MachineConfigPool master --type='merge' --patch \ '{ "spec": { "paused": true } }'
Arrêter le pool de configuration de la machine de travail :
$ oc patch MachineConfigPool worker --type='merge' --patch \ '{ "spec":{ "paused" :true } }'
Pour commencer la migration, réinitialisez le plugin réseau à OpenShift SDN en entrant les commandes suivantes :
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": { "networkType": "OpenShiftSDN" } } }' $ oc patch Network.config.openshift.io cluster --type='merge' \ --patch '{ "spec": { "networkType": "OpenShiftSDN" } }'
Facultatif : Vous pouvez désactiver la migration automatique de plusieurs capacités OVN-Kubernetes vers les équivalents SDN d'OpenShift :
- 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": "OpenShiftSDN", "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 OpenShift SDN afin de répondre aux exigences de votre infrastructure réseau :
- Unité de transmission maximale (MTU)
- Port VXLAN
Pour personnaliser l'un ou l'autre des paramètres susmentionnés, ou les deux, personnalisez et entrez 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":{ "openshiftSDNConfig":{ "mtu":<mtu>, "vxlanPort":<port> }}}}'
mtu
-
Le MTU pour le réseau superposé VXLAN. 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 à
50
moins que la plus petite valeur MTU du nœud. port
-
Le port UDP pour le réseau superposé VXLAN. Si aucune valeur n'est spécifiée, la valeur par défaut est
4789
. Le port ne peut pas être le même que le port Geneve utilisé par OVN-Kubernetes. La valeur par défaut du port Geneve est6081
.
Exemple de commande patch
$ oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{ "spec":{ "defaultNetwork":{ "openshiftSDNConfig":{ "mtu":1200 }}}}'
Attendez que le déploiement du jeu de démons Multus soit terminé.
$ 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 le retour en arrière, redémarrez chaque nœud de votre cluster. Par exemple, vous pouvez utiliser un script bash similaire au 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.
Une fois que les nœuds de votre cluster ont redémarré, démarrez tous les pools de configuration des machines :
Démarrer le pool de configuration maître :
$ oc patch MachineConfigPool master --type='merge' --patch \ '{ "spec": { "paused": false } }'
Démarrer le pool de configuration du travailleur :
$ oc patch MachineConfigPool worker --type='merge' --patch \ '{ "spec": { "paused": false } }'
Lorsque le MCO met à jour les machines de chaque pool de configuration, il redémarre chaque nœud.
Par défaut, le MCO ne met à jour qu'une seule machine par pool à la fois, de sorte que le temps nécessaire à 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
où
<config_name>
est le nom de la machine configurée dans le champmachineconfiguration.openshift.io/currentConfig
.
Confirmez que la migration a réussi :
Pour confirmer que le plugin réseau est OpenShift SDN, entrez la commande suivante. La valeur de
status.networkType
doit êtreOpenShiftSDN
.$ 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
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.Pour afficher le journal des pods pour chaque pod de démon de configuration de machine présenté dans la sortie précédente, entrez 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 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.
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 Opérateur de réseau de cluster, entrez la commande suivante :
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": null } }'
Pour supprimer la configuration OVN-Kubernetes, entrez la commande suivante :
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "defaultNetwork": { "ovnKubernetesConfig":null } } }'
Pour supprimer l'espace de noms du fournisseur de réseau OVN-Kubernetes, entrez la commande suivante :
$ oc delete namespace openshift-ovn-kubernetes