28.3. Mise à jour de la configuration du réseau de nœuds
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
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
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 exemple3
. - 5
- Facultatif : description lisible par l'homme de l'interface.
- 6
- Optional: Specifies the search and server settings for the DNS server.
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
Pour confirmer qu'une politique a été appliquée au cluster, dressez la liste des politiques et de leur état :
$ oc get nncp
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
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
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.
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
Mettez à jour le manifeste
NodeNetworkConfigurationPolicy
utilisé pour créer l'interface. L'exemple suivant supprime un pont Linux et configure la carte réseaueth1
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.
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.
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
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œudsnode-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.
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 ...