Rechercher

28.3. Mise à jour de la configuration du réseau de nœuds

download PDF

Vous pouvez mettre à jour la configuration du réseau de nœuds, par exemple en ajoutant ou en supprimant des interfaces sur les nœuds, en appliquant les manifestes NodeNetworkConfigurationPolicy au cluster.

28.3.1. À propos de l'état-major

OpenShift Container Platform utilise nmstate pour signaler et configurer l'état du réseau des nœuds. Cela permet de modifier la configuration de la politique réseau, par exemple en créant un pont Linux sur tous les nœuds, en appliquant un seul manifeste de configuration au cluster.

La mise en réseau des nœuds est surveillée et mise à jour par les objets suivants :

NodeNetworkState
Indique l'état du réseau sur ce nœud.
NodeNetworkConfigurationPolicy
Décrit la configuration réseau requise sur les nœuds. Vous mettez à jour la configuration du réseau des nœuds, notamment en ajoutant ou en supprimant des interfaces, en appliquant un manifeste NodeNetworkConfigurationPolicy à la grappe.
NodeNetworkConfigurationEnactment
Signale les politiques de réseau appliquées à chaque nœud.

OpenShift Container Platform prend en charge l'utilisation des types d'interface nmstate suivants :

  • Pont Linux
  • VLAN
  • Obligation
  • Ethernet
Note

Si votre cluster OpenShift Container Platform utilise OVN-Kubernetes comme plugin réseau, vous ne pouvez pas attacher un pont Linux ou un bonding à l'interface par défaut d'un hôte en raison d'un changement dans la topologie du réseau hôte d'OVN-Kubernetes. Comme solution de contournement, utilisez une interface réseau secondaire connectée à votre hôte ou basculez vers le plugin réseau OpenShift SDN.

28.3.2. Création d'une interface sur les nœuds

Créez une interface sur les nœuds de la grappe en appliquant un manifeste NodeNetworkConfigurationPolicy à la grappe. Le manifeste détaille la configuration requise pour l'interface.

Par défaut, le manifeste s'applique à tous les nœuds du cluster. Pour ajouter l'interface à des nœuds spécifiques, ajoutez le paramètre spec: nodeSelector et le <key>:<value> approprié pour votre sélecteur de nœud.

Vous pouvez configurer simultanément plusieurs nœuds compatibles avec nmstate. La configuration s'applique à 50 % des nœuds en parallèle. Cette stratégie permet d'éviter que l'ensemble de la grappe ne soit indisponible en cas de défaillance de la connexion réseau. Pour appliquer la configuration de la stratégie en parallèle à une partie spécifique du cluster, utilisez le champ maxUnavailable.

Procédure

  1. Créez le manifeste NodeNetworkConfigurationPolicy. L'exemple suivant configure un pont Linux sur tous les nœuds de travail et configure le résolveur DNS :

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: br1-eth1-policy 1
    spec:
      nodeSelector: 2
        node-role.kubernetes.io/worker: "" 3
      maxUnavailable: 3 4
      desiredState:
        interfaces:
          - name: br1
            description: Linux bridge with eth1 as a port 5
            type: linux-bridge
            state: up
            ipv4:
              dhcp: true
              enabled: true
              auto-dns: false
            bridge:
              options:
                stp:
                  enabled: false
              port:
                - name: eth1
        dns-resolver: 6
          config:
            search:
            - example.com
            - example.org
            server:
            - 8.8.8.8
    1
    Nom de la politique.
    2
    Facultatif : si vous n'incluez pas le paramètre nodeSelector, la stratégie s'applique à tous les nœuds du cluster.
    3
    Cet exemple utilise le sélecteur de nœuds node-role.kubernetes.io/worker: "" pour sélectionner tous les nœuds de travail dans le cluster.
    4
    Facultatif : Spécifie le nombre maximum de nœuds compatibles avec nmstate auxquels la configuration de la stratégie peut être appliquée simultanément. Ce paramètre peut prendre la forme d'un pourcentage (chaîne), par exemple "10%", ou d'une valeur absolue (nombre), par exemple 3.
    5
    Facultatif : description lisible par l'homme de l'interface.
    6
    Optional: Specifies the search and server settings for the DNS server.
  2. Créez la politique de réseau de nœuds :

    oc apply -f br1-eth1-policy.yaml 1
    1
    Nom de fichier du manifeste de la stratégie de configuration du réseau de nœuds.

Ressources supplémentaires

28.3.3. Confirmation des mises à jour de la stratégie de réseau de nœuds sur les nœuds

Un manifeste NodeNetworkConfigurationPolicy décrit la configuration réseau demandée pour les nœuds de la grappe. La politique de réseau de nœuds comprend la configuration de réseau demandée et l'état d'exécution de la politique sur l'ensemble de la grappe.

Lorsque vous appliquez une stratégie de réseau de nœuds, un objet NodeNetworkConfigurationEnactment est créé pour chaque nœud du cluster. La mise en œuvre de la configuration du réseau de nœuds est un objet en lecture seule qui représente l'état de l'exécution de la stratégie sur ce nœud. Si la stratégie n'est pas appliquée sur le nœud, l'acte pour ce nœud inclut une trace de retour pour le dépannage.

Procédure

  1. Pour confirmer qu'une politique a été appliquée au cluster, dressez la liste des politiques et de leur état :

    $ oc get nncp
  2. Facultatif : si la configuration d'une politique prend plus de temps que prévu, vous pouvez inspecter l'état demandé et les conditions d'état d'une politique particulière :

    $ oc get nncp <policy> -o yaml
  3. Facultatif : si la configuration d'une stratégie sur tous les nœuds prend plus de temps que prévu, vous pouvez répertorier l'état des mises en œuvre sur le cluster :

    $ oc get nnce
  4. Facultatif : Pour afficher la configuration d'un texte particulier, y compris les rapports d'erreur en cas d'échec de la configuration :

    $ oc get nnce <node>.<policy> -o yaml

28.3.4. Suppression d'une interface des nœuds

Vous pouvez supprimer une interface d'un ou de plusieurs nœuds de la grappe en modifiant l'objet NodeNetworkConfigurationPolicy et en définissant l'objet state de l'interface sur absent.

La suppression d'une interface d'un nœud ne rétablit pas automatiquement la configuration du réseau du nœud à un état antérieur. Si vous souhaitez rétablir l'état précédent, vous devez définir la configuration du réseau du nœud dans la stratégie.

Si vous supprimez un pont ou une interface de liaison, toutes les cartes d'interface réseau de nœuds du cluster qui étaient précédemment attachées ou subordonnées à ce pont ou à cette interface de liaison sont placées dans l'état down et deviennent inaccessibles. Pour éviter de perdre la connectivité, configurez la carte réseau du nœud dans la même stratégie de manière à ce qu'elle ait un état up et une adresse IP DHCP ou statique.

Note

La suppression de la stratégie de réseau du nœud qui a ajouté une interface ne modifie pas la configuration de la stratégie sur le nœud. Bien qu'un site NodeNetworkConfigurationPolicy soit un objet dans le cluster, il ne représente que la configuration demandée.
De même, la suppression d'une interface ne supprime pas la stratégie.

Procédure

  1. Mettez à jour le manifeste NodeNetworkConfigurationPolicy utilisé pour créer l'interface. L'exemple suivant supprime un pont Linux et configure la carte réseau eth1 avec DHCP pour éviter de perdre la connectivité :

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: <br1-eth1-policy> 1
    spec:
      nodeSelector: 2
        node-role.kubernetes.io/worker: "" 3
      desiredState:
        interfaces:
        - name: br1
          type: linux-bridge
          state: absent 4
        - name: eth1 5
          type: ethernet 6
          state: up 7
          ipv4:
            dhcp: true 8
            enabled: true 9
    1
    Nom de la politique.
    2
    Facultatif : si vous n'incluez pas le paramètre nodeSelector, la stratégie s'applique à tous les nœuds du cluster.
    3
    Cet exemple utilise le sélecteur de nœuds node-role.kubernetes.io/worker: "" pour sélectionner tous les nœuds de travail dans le cluster.
    4
    La modification de l'état à absent supprime l'interface.
    5
    Le nom de l'interface qui doit être détachée de l'interface du pont.
    6
    Le type d'interface. Cet exemple crée une interface réseau Ethernet.
    7
    L'état demandé pour l'interface.
    8
    Facultatif : Si vous n'utilisez pas dhcp, vous pouvez définir une adresse IP statique ou laisser l'interface sans adresse IP.
    9
    Active ipv4 dans cet exemple.
  2. Mettez à jour la stratégie sur le nœud et supprimez l'interface :

    oc apply -f <br1-eth1-policy.yaml> 1
    1
    Nom de fichier du manifeste de la politique.

28.3.5. Exemples de configurations de politiques pour différentes interfaces

28.3.5.1. Exemple : Politique de configuration du réseau du nœud de l'interface de pont Linux

Créez une interface de pont Linux sur les nœuds de la grappe en appliquant un manifeste NodeNetworkConfigurationPolicy à la grappe.

Le fichier YAML suivant est un exemple de manifeste pour une interface de pont Linux. Il contient des exemples de valeurs que vous devez remplacer par vos propres informations.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: br1-eth1-policy 1
spec:
  nodeSelector: 2
    kubernetes.io/hostname: <node01> 3
  desiredState:
    interfaces:
      - name: br1 4
        description: Linux bridge with eth1 as a port 5
        type: linux-bridge 6
        state: up 7
        ipv4:
          dhcp: true 8
          enabled: true 9
        bridge:
          options:
            stp:
              enabled: false 10
          port:
            - name: eth1 11
1
Nom de la politique.
2
Facultatif : si vous n'incluez pas le paramètre nodeSelector, la stratégie s'applique à tous les nœuds du cluster.
3
Cet exemple utilise un sélecteur de nœuds hostname.
4
Name of the interface.
5
Facultatif : description lisible par l'homme de l'interface.
6
Le type d'interface. Cet exemple crée un pont.
7
L'état demandé pour l'interface après sa création.
8
Facultatif : Si vous n'utilisez pas dhcp, vous pouvez définir une adresse IP statique ou laisser l'interface sans adresse IP.
9
Active ipv4 dans cet exemple.
10
Désactive stp dans cet exemple.
11
Le NIC du nœud auquel le pont s'attache.

28.3.5.2. Exemple : Politique de configuration du réseau du nœud de l'interface VLAN

Créez une interface VLAN sur les nœuds de la grappe en appliquant un manifeste NodeNetworkConfigurationPolicy à la grappe.

Le fichier YAML suivant est un exemple de manifeste pour une interface VLAN. Il contient des exemples de valeurs que vous devez remplacer par vos propres informations.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: vlan-eth1-policy 1
spec:
  nodeSelector: 2
    kubernetes.io/hostname: <node01> 3
  desiredState:
    interfaces:
    - name: eth1.102 4
      description: VLAN using eth1 5
      type: vlan 6
      state: up 7
      vlan:
        base-iface: eth1 8
        id: 102 9
1
Nom de la politique.
2
Facultatif : si vous n'incluez pas le paramètre nodeSelector, la stratégie s'applique à tous les nœuds du cluster.
3
Cet exemple utilise un sélecteur de nœuds hostname.
4
Name of the interface.
5
Facultatif : description lisible par l'homme de l'interface.
6
The type of interface. This example creates a VLAN.
7
L'état demandé pour l'interface après sa création.
8
Le NIC du nœud auquel le VLAN est attaché.
9
La balise VLAN.

28.3.5.3. Exemple : Politique de configuration du réseau des nœuds d'interface de liaison

Créez une interface de liaison sur les nœuds de la grappe en appliquant un manifeste NodeNetworkConfigurationPolicy à la grappe.

Note

OpenShift Container Platform ne prend en charge que les modes de liaison suivants :

  • mode=1 active-backup
  • mode=2 balance-xor
  • mode=4 802.3ad
  • mode=5 balance-tlb
  • mode=6 balance-alb

Le fichier YAML suivant est un exemple de manifeste pour une interface de liaison. Il contient des exemples de valeurs que vous devez remplacer par vos propres informations.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: bond0-eth1-eth2-policy 1
spec:
  nodeSelector: 2
    kubernetes.io/hostname: <node01> 3
  desiredState:
    interfaces:
    - name: bond0 4
      description: Bond with ports eth1 and eth2 5
      type: bond 6
      state: up 7
      ipv4:
        dhcp: true 8
        enabled: true 9
      link-aggregation:
        mode: active-backup 10
        options:
          miimon: '140' 11
        port: 12
        - eth1
        - eth2
      mtu: 1450 13
1
Nom de la politique.
2
Facultatif : si vous n'incluez pas le paramètre nodeSelector, la stratégie s'applique à tous les nœuds du cluster.
3
Cet exemple utilise un sélecteur de nœuds hostname.
4
Name of the interface.
5
Facultatif : description lisible par l'homme de l'interface.
6
The type of interface. This example creates a bond.
7
L'état demandé pour l'interface après sa création.
8
Facultatif : Si vous n'utilisez pas dhcp, vous pouvez définir une adresse IP statique ou laisser l'interface sans adresse IP.
9
Active ipv4 dans cet exemple.
10
Le mode de pilotage de la liaison. Cet exemple utilise un mode de sauvegarde actif.
11
Facultatif : Cet exemple utilise miimon pour inspecter le lien de liaison toutes les 140 ms.
12
Les NIC des nœuds subordonnés dans le lien.
13
Facultatif : L'unité de transmission maximale (MTU) pour la liaison. Si elle n'est pas spécifiée, cette valeur est fixée par défaut à 1500.

28.3.5.4. Exemple : Politique de configuration du réseau du nœud d'interface Ethernet

Configurez une interface Ethernet sur les nœuds de la grappe en appliquant un manifeste NodeNetworkConfigurationPolicy à la grappe.

Le fichier YAML suivant est un exemple de manifeste pour une interface Ethernet. Il contient des valeurs types que vous devez remplacer par vos propres informations.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: eth1-policy 1
spec:
  nodeSelector: 2
    kubernetes.io/hostname: <node01> 3
  desiredState:
    interfaces:
    - name: eth1 4
      description: Configuring eth1 on node01 5
      type: ethernet 6
      state: up 7
      ipv4:
        dhcp: true 8
        enabled: true 9
1
Nom de la politique.
2
Facultatif : si vous n'incluez pas le paramètre nodeSelector, la stratégie s'applique à tous les nœuds du cluster.
3
Cet exemple utilise un sélecteur de nœuds hostname.
4
Name of the interface.
5
Facultatif : description lisible par l'homme de l'interface.
6
Le type d'interface. Cet exemple crée une interface réseau Ethernet.
7
L'état demandé pour l'interface après sa création.
8
Facultatif : Si vous n'utilisez pas dhcp, vous pouvez définir une adresse IP statique ou laisser l'interface sans adresse IP.
9
Active ipv4 dans cet exemple.

28.3.5.5. Exemple : Interfaces multiples dans la politique de configuration du réseau du même nœud

Vous pouvez créer plusieurs interfaces dans la même politique de configuration de réseau de nœuds. Ces interfaces peuvent se référencer les unes les autres, ce qui vous permet de construire et de déployer une configuration de réseau à l'aide d'un seul manifeste de stratégie.

L'exemple suivant crée un lien nommé bond10 entre deux cartes d'interface réseau et un pont Linux nommé br1 qui se connecte au lien.

#...
    interfaces:
    - name: bond10
      description: Bonding eth2 and eth3 for Linux bridge
      type: bond
      state: up
      link-aggregation:
        port:
        - eth2
        - eth3
    - name: br1
      description: Linux bridge on bond
      type: linux-bridge
      state: up
      bridge:
        port:
        - name: bond10
#...

28.3.6. Capturer l'IP statique d'une carte réseau attachée à un pont

Important

La capture de l'IP statique d'un NIC est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas leur utilisation en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information au cours du processus de développement.

Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.

28.3.6.1. Exemple : Politique de configuration du réseau du nœud d'interface de pont Linux pour hériter de l'adresse IP statique de la carte d'interface réseau attachée au pont

Créez une interface de pont Linux sur les nœuds du cluster et transférez la configuration IP statique du NIC vers le pont en appliquant un seul manifeste NodeNetworkConfigurationPolicy au cluster.

Le fichier YAML suivant est un exemple de manifeste pour une interface de pont Linux. Il contient des valeurs types que vous devez remplacer par vos propres informations.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: br1-eth1-copy-ipv4-policy 1
spec:
  nodeSelector: 2
    node-role.kubernetes.io/worker: ""
  capture:
    eth1-nic: interfaces.name=="eth1" 3
    eth1-routes: routes.running.next-hop-interface=="eth1"
    br1-routes: capture.eth1-routes | routes.running.next-hop-interface := "br1"
  desiredState:
    interfaces:
      - name: br1
        description: Linux bridge with eth1 as a port
        type: linux-bridge 4
        state: up
        ipv4: "{{ capture.eth1-nic.interfaces.0.ipv4 }}" 5
        bridge:
          options:
            stp:
              enabled: false
          port:
            - name: eth1 6
     routes:
        config: "{{ capture.br1-routes.routes.running }}"
1
Le nom de la police.
2
Facultatif : si vous n'incluez pas le paramètre nodeSelector, la stratégie s'applique à tous les nœuds du cluster. Cet exemple utilise le sélecteur de nœuds node-role.kubernetes.io/worker: "" pour sélectionner tous les nœuds de travail du cluster.
3
La référence au NIC du nœud auquel le pont s'attache.
4
Le type d'interface. Cet exemple crée un pont.
5
L'adresse IP de l'interface du pont. Cette valeur correspond à l'adresse IP du NIC référencé par l'entrée spec.capture.eth1-nic.
6
Le NIC du nœud auquel le pont s'attache.

Ressources supplémentaires

28.3.7. Exemples : Gestion de l'IP

Les exemples de configuration suivants illustrent différentes méthodes de gestion des adresses IP.

Ces exemples utilisent le type d'interface ethernet pour simplifier l'exemple tout en montrant le contexte lié à la configuration de la politique. Ces exemples de gestion IP peuvent être utilisés avec les autres types d'interface.

28.3.7.1. Statique

L'extrait suivant configure statiquement une adresse IP sur l'interface Ethernet :

...
    interfaces:
    - name: eth1
      description: static IP on eth1
      type: ethernet
      state: up
      ipv4:
        dhcp: false
        address:
        - ip: 192.168.122.250 1
          prefix-length: 24
        enabled: true
...
1
Remplacez cette valeur par l'adresse IP statique de l'interface.

28.3.7.2. Pas d'adresse IP

L'extrait suivant garantit que l'interface n'a pas d'adresse IP :

...
    interfaces:
    - name: eth1
      description: No IP on eth1
      type: ethernet
      state: up
      ipv4:
        enabled: false
...

28.3.7.3. Configuration dynamique de l'hôte

L'extrait suivant configure une interface Ethernet qui utilise une adresse IP, une adresse de passerelle et un DNS dynamiques :

...
    interfaces:
    - name: eth1
      description: DHCP on eth1
      type: ethernet
      state: up
      ipv4:
        dhcp: true
        enabled: true
...

L'extrait suivant configure une interface Ethernet qui utilise une adresse IP dynamique mais pas d'adresse de passerelle dynamique ni de DNS :

...
    interfaces:
    - name: eth1
      description: DHCP without gateway or DNS on eth1
      type: ethernet
      state: up
      ipv4:
        dhcp: true
        auto-gateway: false
        auto-dns: false
        enabled: true
...

28.3.7.4. DNS

Définir la configuration DNS est analogue à la modification du fichier /etc/resolv.conf. L'extrait suivant définit la configuration DNS sur l'hôte.

...
    interfaces: 1
       ...
       ipv4:
         ...
         auto-dns: false
         ...
    dns-resolver:
      config:
        search:
        - example.com
        - example.org
        server:
        - 8.8.8.8
...
1
Vous devez configurer une interface avec auto-dns: false ou utiliser une configuration IP statique sur une interface pour que Kubernetes NMState stocke les paramètres DNS personnalisés.
Important

Vous ne pouvez pas utiliser br-ex, un pont Open vSwitch géré par OVNKubernetes, comme interface lors de la configuration des résolveurs DNS.

28.3.7.5. Routage statique

L'extrait suivant configure une route statique et une IP statique sur l'interface eth1.

...
    interfaces:
    - name: eth1
      description: Static routing on eth1
      type: ethernet
      state: up
      ipv4:
        dhcp: false
        address:
        - ip: 192.0.2.251 1
          prefix-length: 24
        enabled: true
    routes:
      config:
      - destination: 198.51.100.0/24
        metric: 150
        next-hop-address: 192.0.2.1 2
        next-hop-interface: eth1
        table-id: 254
...
1
L'adresse IP statique de l'interface Ethernet.
2
Adresse du prochain saut pour le trafic du nœud. Elle doit se trouver dans le même sous-réseau que l'adresse IP définie pour l'interface Ethernet.
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.