13.2. Modifier le MTU du cluster
En tant qu'administrateur de cluster, vous pouvez modifier l'unité de transmission maximale (MTU) de votre cluster. La migration est perturbatrice et les nœuds de votre cluster peuvent être temporairement indisponibles pendant la mise à jour du MTU.
La procédure suivante décrit comment modifier le MTU de la grappe en utilisant les configurations de machine, le DHCP ou une ISO. Si vous utilisez l'approche DHCP ou ISO, vous devez vous référer aux artefacts de configuration que vous avez conservés après l'installation de votre cluster pour compléter la procédure.
Conditions préalables
-
You installed the OpenShift CLI (
oc
). -
Vous êtes connecté au cluster avec un utilisateur disposant des privilèges
cluster-admin
. Vous avez identifié le MTU cible pour votre cluster. Le MTU correct varie en fonction du plugin réseau utilisé par votre cluster :
-
OVN-Kubernetes: Le MTU du cluster doit être défini à
100
de moins que la valeur MTU matérielle la plus basse de votre cluster. -
OpenShift SDN: Le MTU du cluster doit être défini à
50
de moins que la valeur MTU matérielle la plus basse de votre cluster.
-
OVN-Kubernetes: Le MTU du cluster doit être défini à
Procédure
Pour augmenter ou diminuer le MTU pour le réseau cluster, suivez la procédure suivante.
Pour obtenir le MTU actuel du réseau de la grappe, entrez la commande suivante :
$ oc describe network.config cluster
Exemple de sortie
... Status: Cluster Network: Cidr: 10.217.0.0/22 Host Prefix: 23 Cluster Network MTU: 1400 Network Type: OpenShiftSDN Service Network: 10.217.4.0/23 ...
Préparez votre configuration pour le MTU matériel :
Si votre MTU matériel est spécifié avec DHCP, mettez à jour votre configuration DHCP, par exemple avec la configuration dnsmasq suivante :
dhcp-option-force=26,<mtu>
où :
<mtu>
- Spécifie le MTU matériel que le serveur DHCP doit annoncer.
- Si le MTU de votre matériel est spécifié par une ligne de commande du noyau avec PXE, mettez à jour cette configuration en conséquence.
Si votre MTU matériel est spécifié dans une configuration de connexion NetworkManager, effectuez les étapes suivantes. Cette approche est la valeur par défaut d'OpenShift Container Platform si vous ne spécifiez pas explicitement votre configuration réseau avec DHCP, une ligne de commande du noyau ou une autre méthode. Vos nœuds de cluster doivent tous utiliser la même configuration réseau sous-jacente pour que la procédure suivante fonctionne sans modification.
Recherchez l'interface réseau principale :
Si vous utilisez le plugin réseau OpenShift SDN, entrez la commande suivante :
$ oc debug node/<node_name> -- chroot /host ip route list match 0.0.0.0/0 | awk '{print $5 }'
où :
<node_name>
- Spécifie le nom d'un nœud dans votre cluster.
Si vous utilisez le plugin réseau OVN-Kubernetes, entrez la commande suivante :
oc debug node/<node_name> -- chroot /host nmcli -g connection.interface-name c show ovs-if-phys0
où :
<node_name>
- Spécifie le nom d'un nœud dans votre cluster.
Créez la configuration NetworkManager suivante dans le fichier
<interface>-mtu.conf
:Exemple de configuration de la connexion NetworkManager
[connection-<interface>-mtu] match-device=interface-name:<interface> ethernet.mtu=<mtu>
où :
<mtu>
- Spécifie la nouvelle valeur du MTU matériel.
<interface>
- Spécifie le nom de l'interface réseau primaire.
Créez deux objets
MachineConfig
, l'un pour les nœuds du plan de contrôle et l'autre pour les nœuds de travail de votre cluster :Créez la configuration Butane suivante dans le fichier
control-plane-interface.bu
:variant: openshift version: 4.12.0 metadata: name: 01-control-plane-interface labels: machineconfiguration.openshift.io/role: master storage: files: - path: /etc/NetworkManager/conf.d/99-<interface>-mtu.conf 1 contents: local: <interface>-mtu.conf 2 mode: 0600
Créez la configuration Butane suivante dans le fichier
worker-interface.bu
:variant: openshift version: 4.12.0 metadata: name: 01-worker-interface labels: machineconfiguration.openshift.io/role: worker storage: files: - path: /etc/NetworkManager/conf.d/99-<interface>-mtu.conf 1 contents: local: <interface>-mtu.conf 2 mode: 0600
Créez des objets
MachineConfig
à partir des configurations Butane en exécutant la commande suivante :$ for manifest in control-plane-interface worker-interface; do butane --files-dir . $manifest.bu > $manifest.yaml done
Pour commencer la migration du MTU, spécifiez la configuration de la migration en entrant la commande suivante. L'opérateur Machine Config effectue un redémarrage progressif des nœuds de la grappe pour préparer le changement de MTU.
$ oc patch Network.operator.openshift.io cluster --type=merge --patch \ '{"spec": { "migration": { "mtu": { "network": { "from": <overlay_from>, "to": <overlay_to> } , "machine": { "to" : <machine_to> } } } } }'
où :
<overlay_from>
- Spécifie la valeur actuelle du MTU du réseau cluster.
<overlay_to>
-
Spécifie le MTU cible pour le réseau du cluster. Cette valeur est définie par rapport à la valeur de
<machine_to>
et pour OVN-Kubernetes doit être100
moins et pour OpenShift SDN doit être50
moins. <machine_to>
- Spécifie le MTU pour l'interface réseau primaire sur le réseau hôte sous-jacent.
Exemple d'augmentation du MTU du cluster
$ oc patch Network.operator.openshift.io cluster --type=merge --patch \ '{"spec": { "migration": { "mtu": { "network": { "from": 1400, "to": 9000 } , "machine": { "to" : 9100} } } } }'
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
.NotePar 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.
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 | grep ExecStart
où
<config_name>
est le nom de la machine configurée dans le champmachineconfiguration.openshift.io/currentConfig
.La configuration de la machine doit inclure la mise à jour suivante de la configuration de systemd :
ExecStart=/usr/local/bin/mtu-migration.sh
Mettre à jour la valeur MTU de l'interface réseau sous-jacente :
Si vous spécifiez le nouveau MTU avec une configuration de connexion NetworkManager, entrez la commande suivante. L'opérateur MachineConfig effectue automatiquement un redémarrage des nœuds de votre cluster.
$ for manifest in control-plane-interface worker-interface; do oc create -f $manifest.yaml done
- Si vous spécifiez le nouveau MTU avec une option de serveur DHCP ou une ligne de commande du noyau et PXE, apportez les modifications nécessaires à votre infrastructure.
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
.NotePar 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.
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 | grep path :
où
<config_name>
est le nom de la machine configurée dans le champmachineconfiguration.openshift.io/currentConfig
.Si la configuration de la machine est déployée avec succès, la sortie précédente contient le chemin d'accès au fichier
/etc/NetworkManager/system-connections/<connection_name>
.La configuration de la machine ne doit pas contenir la ligne
ExecStart=/usr/local/bin/mtu-migration.sh
.
Pour finaliser la migration du MTU, entrez l'une des commandes suivantes :
Si vous utilisez le plugin réseau OVN-Kubernetes :
$ oc patch Network.operator.openshift.io cluster --type=merge --patch \ '{"spec": { "migration": null, "defaultNetwork":{ "ovnKubernetesConfig": { "mtu": <mtu> }}}}'
où :
<mtu>
-
Spécifie le nouveau MTU du réseau cluster que vous avez spécifié avec
<overlay_to>
.
Si vous utilisez le plugin réseau OpenShift SDN :
$ oc patch Network.operator.openshift.io cluster --type=merge --patch \ '{"spec": { "migration": null, "defaultNetwork":{ "openshiftSDNConfig": { "mtu": <mtu> }}}}'
où :
<mtu>
-
Spécifie le nouveau MTU du réseau cluster que vous avez spécifié avec
<overlay_to>
.
Vérification
Vous pouvez vérifier qu'un nœud de votre cluster utilise un MTU que vous avez spécifié dans la procédure précédente.
Pour obtenir le MTU actuel du réseau de la grappe, entrez la commande suivante :
$ oc describe network.config cluster
Obtenir le MTU actuel de l'interface réseau principale d'un nœud.
Pour dresser la liste des nœuds de votre cluster, entrez la commande suivante :
$ oc get nodes
Pour obtenir le paramètre MTU actuel de l'interface réseau principale d'un nœud, entrez la commande suivante :
$ oc debug node/<node> -- chroot /host ip address show <interface>
où :
<node>
- Spécifie un nœud à partir de la sortie de l'étape précédente.
<interface>
- Spécifie le nom de l'interface réseau primaire pour le nœud.
Exemple de sortie
ens3 : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8051