28.4. Dépannage de la configuration du réseau de nœuds
Si la configuration du réseau de nœuds rencontre un problème, la politique est automatiquement annulée et les actes signalent un échec. Il s'agit notamment des problèmes suivants
- La configuration n'est pas appliquée sur l'hôte.
- L'hôte perd la connexion à la passerelle par défaut.
- L'hôte perd la connexion avec le serveur API.
28.4.1. Dépannage d'une configuration incorrecte de la politique de configuration du réseau de nœuds
Vous pouvez appliquer des modifications à la configuration du réseau de nœuds à l'ensemble de votre cluster en appliquant une stratégie de configuration du réseau de nœuds. Si vous appliquez une configuration incorrecte, vous pouvez utiliser l'exemple suivant pour dépanner et corriger la stratégie de réseau de nœuds défaillante.
Dans cet exemple, une stratégie de pont Linux est appliquée à un exemple de cluster comprenant trois nœuds de plan de contrôle et trois nœuds de calcul. La stratégie n'est pas appliquée car elle fait référence à une interface incorrecte. Pour trouver l'erreur, examinez les ressources NMState disponibles. Vous pouvez ensuite mettre à jour la stratégie avec la configuration correcte.
Procédure
Créez une politique et appliquez-la à votre cluster. L'exemple suivant crée un pont simple sur l'interface
ens01
:apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: ens01-bridge-testfail spec: desiredState: interfaces: - name: br1 description: Linux bridge with the wrong port type: linux-bridge state: up ipv4: dhcp: true enabled: true bridge: options: stp: enabled: false port: - name: ens01
$ oc apply -f ens01-bridge-testfail.yaml
Exemple de sortie
nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail created
Vérifiez l'état de la politique en exécutant la commande suivante :
$ oc get nncp
Le résultat montre que la politique a échoué :
Exemple de sortie
NAME STATUS ens01-bridge-testfail FailedToConfigure
Toutefois, l'état de la politique n'indique pas à lui seul si elle a échoué sur tous les nœuds ou sur un sous-ensemble de nœuds.
Répertoriez les éléments de configuration du réseau des nœuds pour voir si la stratégie a réussi sur l'un d'entre eux. Si la stratégie n'a échoué que pour un sous-ensemble de nœuds, cela signifie que le problème est lié à une configuration de nœud spécifique. Si la stratégie a échoué sur tous les nœuds, cela suggère que le problème est lié à la stratégie.
$ oc get nnce
Le résultat montre que la politique a échoué sur tous les nœuds :
Exemple de sortie
NAME STATUS control-plane-1.ens01-bridge-testfail FailedToConfigure control-plane-2.ens01-bridge-testfail FailedToConfigure control-plane-3.ens01-bridge-testfail FailedToConfigure compute-1.ens01-bridge-testfail FailedToConfigure compute-2.ens01-bridge-testfail FailedToConfigure compute-3.ens01-bridge-testfail FailedToConfigure
Affichez l'une des exécutions qui a échoué et regardez la traceback. La commande suivante utilise l'outil de sortie
jsonpath
pour filtrer la sortie :$ oc get nnce compute-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'
Cette commande renvoie une large traceback qui a été éditée pour des raisons de concision :
Exemple de sortie
error reconciling NodeNetworkConfigurationPolicy at desired state apply: , failed to execute nmstatectl set --no-commit --timeout 480: 'exit status 1' '' ... libnmstate.error.NmstateVerificationError: desired ======= --- name: br1 type: linux-bridge state: up bridge: options: group-forward-mask: 0 mac-ageing-time: 300 multicast-snooping: true stp: enabled: false forward-delay: 15 hello-time: 2 max-age: 20 priority: 32768 port: - name: ens01 description: Linux bridge with the wrong port ipv4: address: [] auto-dns: true auto-gateway: true auto-routes: true dhcp: true enabled: true ipv6: enabled: false mac-address: 01-23-45-67-89-AB mtu: 1500 current ======= --- name: br1 type: linux-bridge state: up bridge: options: group-forward-mask: 0 mac-ageing-time: 300 multicast-snooping: true stp: enabled: false forward-delay: 15 hello-time: 2 max-age: 20 priority: 32768 port: [] description: Linux bridge with the wrong port ipv4: address: [] auto-dns: true auto-gateway: true auto-routes: true dhcp: true enabled: true ipv6: enabled: false mac-address: 01-23-45-67-89-AB mtu: 1500 difference ========== --- desired +++ current @@ -13,8 +13,7 @@ hello-time: 2 max-age: 20 priority: 32768 - port: - - name: ens01 + port: [] description: Linux bridge with the wrong port ipv4: address: [] line 651, in _assert_interfaces_equal\n current_state.interfaces[ifname],\nlibnmstate.error.NmstateVerificationError:
Le site
NmstateVerificationError
répertorie la configuration de la politiquedesired
, la configurationcurrent
de la politique sur le nœud, et le sitedifference
met en évidence les paramètres qui ne correspondent pas. Dans cet exemple, leport
est inclus dans ledifference
, ce qui suggère que le problème vient de la configuration du port dans la politique.Pour vous assurer que la stratégie est correctement configurée, affichez la configuration du réseau pour un ou tous les nœuds en demandant l'objet
NodeNetworkState
. La commande suivante renvoie la configuration du réseau pour le nœudcontrol-plane-1
:$ oc get nns control-plane-1 -o yaml
La sortie montre que le nom de l'interface sur les nœuds est
ens1
mais que la stratégie qui a échoué utilise incorrectementens01
:Exemple de sortie
- ipv4: ... name: ens1 state: up type: ethernet
Corrigez l'erreur en modifiant la politique existante :
$ oc edit nncp ens01-bridge-testfail
... port: - name: ens1
Enregistrez la politique pour appliquer la correction.
Vérifiez l'état de la politique pour vous assurer qu'elle a été mise à jour avec succès :
$ oc get nncp
Exemple de sortie
NAME STATUS ens01-bridge-testfail SuccessfullyConfigured
La politique mise à jour est configurée avec succès sur tous les nœuds du cluster.