OpenShift: De grootte van de netwerkringbuffer vergroten op werkknooppunten voor het controleniveau
Summary: In dit artikel wordt de procedure beschreven voor het verhogen van de RX-ringbuffers op de interfaces van elk werkknooppunt in een OpenShift Container Platform (OCP) Hosted Control Plane (HCP) cluster. ...
Instructions
Voorbereiding
In de onderstaande voorbeelden hebben we twee interfaces geïdentificeerd die aanpassing van de RX-buffers vereisen.
eno12399np0 ens1f1np1
We hebben de geldige waarden voor de ringbuffers op de NIC's geverifieerd met behulp van de ethtool -g Opdracht. Dit kan worden gedaan vanuit een debug-pod op het knooppunt of worden geëxtraheerd uit een SOS-bundel.
# 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
We hebben gekozen voor 4096 voor de waarde om de ringbuffers in te stellen.
We voeren de volgende stappen uit om de bewerking te voltooien.
- Maken
ButaneBestanden. - Converteer die butaanbestanden naar
YAML. - Sluit de gegenereerde
YAMLin eenconfigmapObject. - Maak het
configmaps. - Bewerk de
nodepoolbezwaar maken om te verwijzen naar deconfigmapsGemaakt. - Wacht tot de configuratie-update is voltooid.
- Controleer of de configuratie-update is voltooid en of de wijzigingen zijn doorgevoerd.
Bereid Butaan-bestanden voor.
Maak er twee Butane bestanden, één voor elke 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
Converteren Butane bestanden naar MachineConfig YAML
Download het uitvoerbare bestand Butaan en voer de conversie uit.
# 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
Maken ConfigMap Objecten.
Elke gegenereerde wrapwrap YAML in een ConfigMap Naam mc-worker-ethtool- -buffer In het clusters Naamruimte.
# 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
Toepassen ConfigMaps naar het cluster.
$ oc apply -f mc-worker-ethtool-eno12399np0-buffer.yaml $ oc apply -f mc-worker-ethtool-ens1f1np1-buffer.yaml
Koppelen ConfigMaps naar de knooppuntgroep.
Bewerk de knooppuntgroep en voeg de ConfigMap Namen onder spec.config
$ oc edit nodepool [NODEPOOL_NAME] -n clusters
Voeg de volgende regels in het spec Sectie:
spec: config: - name: mc-worker-ethtool-eno12399np0-buffer - name: mc-worker-ethtool-ens1f1np1-buffer
Verifiëren node‑pool Update.
$ oc get nodepool -n clusters
Bevestig dat UPDATINGCONFIG Toont True en dat de versie overeenkomt met de clusterversie.
Controleer de servicestatus op elk werkknooppunt.
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
Valideer de instellingen voor de ringbuffer
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