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
Important

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écification v4InternalSubnet sous la définition de l'objet spec.defaultNetwork.ovnKubernetesConfig. OVN-Kubernetes utilise par défaut la plage d'adresses IP 100.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.

Important

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 :

Tableau 24.4. Différences dans la configuration des adresses IP de sortie
OVN-KubernetesOpenShift SDN
  • Créer un objet EgressIPs
  • Ajouter une annotation sur un objet Node
  • Patch d'un objet NetNamespace
  • Patch d'un objet HostSubnet

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 :

Tableau 24.5. Différences dans la configuration de la politique du réseau de sortie
OVN-KubernetesOpenShift SDN
  • Créer un objet EgressFirewall dans un espace de noms
  • Créer un objet EgressNetworkPolicy dans un espace de noms
Note

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 :

Tableau 24.6. Différences dans la configuration de la multidiffusion
OVN-KubernetesOpenShift SDN
  • Ajouter une annotation sur un objet Namespace
  • Ajouter une annotation sur un objet NetNamespace

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.

Tableau 24.7. Migrer vers OVN-Kubernetes depuis OpenShift SDN
Étapes initiées par l'utilisateurActivité de migration

Définissez le champ migration de la ressource personnalisée (CR) Network.operator.openshift.io nommée cluster sur OVNKubernetes. Assurez-vous que le champ migration est bien null avant de lui attribuer une valeur.

Opérateur de réseau en grappe (CNO)
Met à jour le statut du CR Network.config.openshift.io nommé cluster en conséquence.
Opérateur de configuration de machine (MCO)
Déploie une mise à jour de la configuration systemd nécessaire pour OVN-Kubernetes ; Le MCO met à jour une seule machine par pool à la fois par défaut, ce qui fait que la durée totale de la migration augmente avec la taille du cluster.

Mettre à jour le champ networkType du CR Network.config.openshift.io.

CNO

Effectue les actions suivantes :

  • Détruit les pods du plan de contrôle OpenShift SDN.
  • Déploie les pods du plan de contrôle OVN-Kubernetes.
  • Met à jour les objets Multus pour refléter le nouveau plugin réseau.

Redémarrez chaque nœud du cluster.

Groupement d'entreprises
Au fur et à mesure que les nœuds redémarrent, le cluster attribue des adresses IP aux pods sur le réseau du cluster OVN-Kubernetes.

Si un retour en arrière vers OpenShift SDN est nécessaire, le tableau suivant décrit le processus.

Tableau 24.8. Effectuer un retour en arrière vers OpenShift SDN
Étapes initiées par l'utilisateurActivité de migration

Suspendre le MCO pour s'assurer qu'il n'interrompt pas la migration.

Le MCO s'arrête.

Définissez le champ migration de la ressource personnalisée (CR) Network.operator.openshift.io nommée cluster sur OpenShiftSDN. Assurez-vous que le champ migration est bien null avant de lui attribuer une valeur.

CNO
Met à jour le statut du CR Network.config.openshift.io nommé cluster en conséquence.

Mettre à jour le champ networkType.

CNO

Effectue les actions suivantes :

  • Détruit les pods du plan de contrôle OVN-Kubernetes.
  • Déploie les pods du plan de contrôle OpenShift SDN.
  • Met à jour les objets Multus pour refléter le nouveau plugin réseau.

Redémarrez chaque nœud du cluster.

Groupement d'entreprises
Au fur et à mesure que les nœuds redémarrent, le cluster attribue des adresses IP aux pods sur le réseau OpenShift-SDN.

Activer le MCO après le redémarrage de tous les nœuds de la grappe.

MCO
Déploie une mise à jour de la configuration systemd nécessaire à OpenShift SDN ; Le MCO met à jour une seule machine par pool à la fois par défaut, de sorte que la durée totale de la migration augmente avec la taille du cluster.

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.

Important

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

  1. 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
  2. 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" } } }'
    Note

    Cette é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.

  3. 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 est true.

  4. 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 est 4789.
    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
        }}}}'

  5. 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.

    Note

    Par 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.

  6. Confirmer l'état de la configuration de la nouvelle machine sur les hôtes :

    1. 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 est Done.
      • La valeur du champ machineconfiguration.openshift.io/currentConfig est égale à la valeur du champ machineconfiguration.openshift.io/desiredConfig.
    2. Pour confirmer que la configuration de la machine est correcte, entrez la commande suivante :

      oc get machineconfig <config_name> -o yaml | grep ExecStart

      <config_name> est le nom de la machine configurée dans le champ machineconfiguration.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
    3. 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.

      1. 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.

      2. 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

        pod est le nom d'un pod de démon de configuration de machine.

      3. Résoudre les erreurs éventuelles dans les journaux affichés par la sortie de la commande précédente.
  7. 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"
          }
        }'

      cidr est un bloc CIDR et prefix 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 CIDR 100.64.0.0/16 car le fournisseur de réseau OVN-Kubernetes utilise ce bloc en interne.

      Important

      Vous ne pouvez pas modifier le bloc d'adresses du réseau de service pendant la migration.

  8. 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

  9. 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.

  10. Confirmez que la migration a réussi :

    1. Pour confirmer que le plugin réseau est OVN-Kubernetes, entrez la commande suivante. La valeur de status.networkType doit être OVNKubernetes.

      $ oc get network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'
    2. Pour confirmer que les nœuds du cluster sont dans l'état Ready, entrez la commande suivante :

      $ oc get nodes
    3. 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.

    4. 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.

  11. N'effectuez les étapes suivantes que si la migration a réussi et que votre cluster est en bon état :

    1. 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 } }'
    2. 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 } } }'
    3. 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

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.