OpenShift : Comment augmenter la taille de la mémoire tampon en anneau du réseau sur les nœuds de travail pour le plan de contrôle
Summary: Cet article décrit la procédure à suivre pour augmenter les tampons d’anneau RX sur les interfaces de chaque nœud de travail dans un cluster de plan de contrôle hébergé (HCP) OpenShift Container Platform (OCP). ...
Instructions
Préparation
Dans les exemples ci-dessous, nous avons identifié deux interfaces qui nécessitent une modification des tampons RX.
eno12399np0 ens1f1np1
Nous avons vérifié les valeurs valides pour les tampons en anneau sur les cartes réseau à l’aide de la commande ethtool -g . Cette opération peut être effectuée à partir d’un pod de débogage sur le nœud ou extraite d’un bundle SOS.
# oc debug node/samplenode # chroot /host # ethtool -g eno12399np0 Ring parameters for eno12399np0: Pre-set maximums: RX: 8192 RX Mini: n/a RX Jumbo: n/a TX: 8192 Current hardware settings: RX: 4096 RX Mini: n/a RX Jumbo: n/a TX: 1024 RX Buf Len: n/a CQE Size: n/a TX Push: off TCP data split: off
Nous avons choisi 4096 pour la valeur pour définir les tampons en anneau.
Nous allons effectuer les étapes suivantes pour terminer l’opération.
- Création
ButaneFichiers. - Convertissez ces fichiers Butane en
YAML. - Intégrer le fichier généré
YAMLdans unconfigmapObjet. - Créez le fichier
configmaps. - Modifiez le
nodepoolobjet pour référencer l’objetconfigmapsCréé. - Attendez la fin de la mise à jour de la configuration.
- Vérifiez que la mise à jour de la configuration est terminée et que les modifications ont bien été implémentées.
Préparez les fichiers Butane.
Créer deux Butane fichiers, un pour chaque interface.
# eno12399np0.bu
variant: openshift
version: 4.18.0
metadata:
name: 99-worker-ethtool-eno12399np0-buffer
labels:
machineconfiguration.openshift.io/role: worker
storage:
files:
- path: /etc/systemd/system/set-ethtool-eno12399np0-buffer.service
mode: 0644
overwrite: true
contents:
inline: |
[Unit]
Description=Set ethtool RX buffer size for network interface
Requires=NetworkManager.service
After=NetworkManager.service
Before=ovs-configuration.service
DefaultDependencies=no
[Service]
Type=oneshot
ExecStart=/bin/bash -c "/sbin/ethtool -G eno12399np0 rx 4096 >> /var/log/user-data.log 2>&1"
[Install]
WantedBy=multi-user.target
systemd:
units:
- name: set-ethtool-eno12399np0-buffer.service
enabled: true
# ens1f1np1.bu
variant: openshift
version: 4.18.0
metadata:
name: 99-worker-ethtool-ens1f1np1-buffer
labels:
machineconfiguration.openshift.io/role: worker
storage:
files:
- path: /etc/systemd/system/set-ethtool-ens1f1np1-buffer.service
mode: 0644
overwrite: true
contents:
inline: |
[Unit]
Description=Set ethtool RX buffer size for network interface
Requires=NetworkManager.service
After=NetworkManager.service
Before=ovs-configuration.service
DefaultDependencies=no
[Service]
Type=oneshot
ExecStart=/bin/bash -c "/sbin/ethtool -G ens1f1np1 rx 4096 >> /var/log/user-data.log 2>&1"
[Install]
WantedBy=multi-user.target
systemd:
units:
- name: set-ethtool-ens1f1np1-buffer.service
enabled: true
Convertir Butane fichiers à MachineConfig YAML
Téléchargez le fichier exécutable Butane et exécutez la conversion.
# Download butane (example) $ curl -L -o butane https://mirror.openshift.com/pub/openshift-v4/clients/butane/butane-linux-amd64 $ chmod +x butane # Convert $ ./butane eno12399np0.bu -o eno12399np0.yaml $ ./butane ens1f1np1.bu -o ens1f1np1.yaml
Création ConfigMap Objets.
Encapsulez chaque disque généré YAML dans un ConfigMap Nommé mc-worker-ethtool- -buffer dans l' clusters Noms.
# mc-worker-ethtool-eno12399np0-buffer.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mc-worker-ethtool-eno12399np0-buffer
namespace: clusters
data:
config: |
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: worker
name: 99-worker-ethtool-eno12399np0-buffer
spec:
config:
ignition:
version: 3.4.0
storage:
files:
- contents:
compression: gzip
source: data:;base64,[BASE64_CONTENT]
mode: 420
overwrite: true
path: /etc/systemd/system/set-ethtool-eno12399np0-buffer.service
systemd:
units:
- name: set-ethtool-eno12399np0-buffer.service
enabled: true
# mc-worker-ethtool-ens1f1np1-buffer.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mc-worker-ethtool-ens1f1np1-buffer
namespace: clusters
data:
config: |
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: worker
name: 99-worker-ethtool-ens1f1np1-buffer
spec:
config:
ignition:
version: 3.4.0
storage:
files:
- contents:
compression: gzip
source: data:;base64,[BASE64_CONTENT]
mode: 420
overwrite: true
path: /etc/systemd/system/set-ethtool-ens1f1np1-buffer.service
systemd:
units:
- name: set-ethtool-ens1f1np1-buffer.service
enabled: true
Appliquer ConfigMaps vers le cluster.
$ oc apply -f mc-worker-ethtool-eno12399np0-buffer.yaml $ oc apply -f mc-worker-ethtool-ens1f1np1-buffer.yaml
Connecter ConfigMaps au pool de nœuds.
Modifiez le pool de nœuds et ajoutez le ConfigMap Noms sous spec.config
$ oc edit nodepool [NODEPOOL_NAME] -n clusters
Insérez les lignes suivantes dans le fichier spec Section:
spec: config: - name: mc-worker-ethtool-eno12399np0-buffer - name: mc-worker-ethtool-ens1f1np1-buffer
Vérifier node‑pool mettre à jour.
$ oc get nodepool -n clusters
Vérifiez que UPDATINGCONFIG indique True et que la version correspond à la version du cluster.
Vérifiez l’état du service sur chaque nœud de travail.
for i in $(oc get nodes -l node-role.kubernetes.io/worker= --no-headers | awk '{print $1}'); do
oc debug node/$i -- chroot /host systemctl status set-ethtool-eno12399np0-buffer.service;
done
for i in $(oc get nodes -l node-role.kubernetes.io/worker= --no-headers | awk '{print $1}'); do
oc debug node/$i -- chroot /host systemctl status set-ethtool-ens1f1np1-buffer.service;
done
Valider les paramètres de la mémoire tampon en anneau
for i in $(oc get nodes -l node-role.kubernetes.io/worker= --no-headers | awk '{print $1}'); do
oc debug node/$i -- chroot /host ethtool -g eno12399np0;
done
for i in $(oc get nodes -l node-role.kubernetes.io/worker= --no-headers | awk '{print $1}'); do
oc debug node/$i -- chroot /host ethtool -g ens1f1np1;
done