OpenShift: Як збільшити розмір буфера мережевого кільця на робочих вузлах для керуючої площини

Summary: У цій статті описано процедуру збільшення RX-кільцевих буферів на інтерфейсах кожного робочого вузла в кластері OpenShift Container Platform (OCP) Hosted Control Plane (HCP).

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions

Приготування

 У наведених нижче прикладах ми визначили два інтерфейси, які потребують модифікації RX-буферів. 

 

eno12399np0
ens1f1np1

Ми перевірили допустимі значення кільцевих буферів на мережевих картах, використовуючи ethtool -g Командування. Це можна зробити з debug-pod на вузлі або витягнути з 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

Ми визначилися з 4096 значенням для налаштування кільцевих буферів. 

Ми виконаємо наступні кроки для завершення операції.

  1. Створити Butane Файли. 
  2. Конвертуйте ці бутанові файли у YAML
  3. Вбудувати згенероване YAML у configmap Об'єкт. 
  4. Створіть configmaps
  5.  Редагувати nodepool об'єкт для посилання на configmaps створено. 
  6. Чекайте, поки оновлення конфігурації завершиться. 
  7. Перевірте, оновлення конфігурації завершено, і зміни були успішно реалізовані.  

 

Підготуйте файли з бутаном.

Створіть два Butane По одному для кожного інтерфейсу.

# 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

Конвертація Butane файлів MachineConfig YAML

Завантажте виконуваний файл Butane і запустіть конвертацію.

# 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

Створити ConfigMap Об'єкти.

Обгорнути кожну згенеровану YAML у ConfigMap названо mc-worker-ethtool- -buffer у clusters Простір назв.

# 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

Подайте заявку ConfigMaps до кластера.

$ oc apply -f mc-worker-ethtool-eno12399np0-buffer.yaml
$ oc apply -f mc-worker-ethtool-ens1f1np1-buffer.yaml

Прикріпити ConfigMaps до пулу вузлів.

Відредагуйте пул вузлів і додайте ConfigMap Назви у розділі spec.config 

$ oc edit nodepool [NODEPOOL_NAME] -n clusters

Вставте наступні рядки у spec Розділ:

spec:
  config:
  - name: mc-worker-ethtool-eno12399np0-buffer
  - name: mc-worker-ethtool-ens1f1np1-buffer

Перевірити node‑pool Оновлення.

$ oc get nodepool -n clusters

Підтвердь це UPDATINGCONFIG Шоу True і що версія відповідає кластерній версії.

Перевіряйте статус сервісу на кожному робочому вузлі.

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

Перевірка налаштувань кільцевого буфера

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

Affected Products

APEX, APEX Cloud Platform for Red Hat OpenShift
Article Properties
Article Number: 000428878
Article Type: How To
Last Modified: 17 فبراير 2026
Version:  1
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.