오픈 시프트: 컨트롤 플레인의 작업자 노드에서 네트워크 링 버퍼 크기를 늘리는 방법

Summary: 이 문서에서는 OCP(OpenShift Container Platform) HCP(Hosted Control Plane) 클러스터에 있는 각 작업자 노드의 인터페이스에서 RX 링 버퍼를 늘리는 절차를 간략하게 설명합니다.

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

다음을 사용하여 NIC의 링 버퍼에 유효한 값을 확인했습니다. ethtool -g 명령어와 동일한 방식으로 AUTHC를 사용합니다. 이 작업은 노드의 디버그 포드에서 수행하거나 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. 생성된 Embed 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

Apply 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.