24.12. 하드웨어 오프로드 구성


클러스터 관리자는 호환 가능한 노드에서 하드웨어 오프로드를 구성하여 데이터 처리 성능을 높이고 호스트 CPU의 부하를 줄일 수 있습니다.

24.12.1. 하드웨어 오프로드 정보

Open vSwitch 하드웨어 오프로드는 CPU에서 벗어나 네트워크 인터페이스 컨트롤러의 전용 프로세서로 오프로드하여 네트워크 작업을 처리하는 방법입니다. 결과적으로 클러스터는 데이터 전송 속도를 높이고 CPU 워크로드를 줄이며 컴퓨팅 비용을 절감할 수 있습니다.

이 기능의 주요 요소는 SmartNICs라는 최신 네트워크 인터페이스 컨트롤러 클래스입니다. SmartNIC는 과도하게 많은 네트워크 처리 작업을 처리할 수 있는 네트워크 인터페이스 컨트롤러입니다. 전용 그래픽 카드가 그래픽 성능을 향상시킬 수있는 것과 마찬가지로 SmartNIC는 네트워크 성능을 향상시킬 수 있습니다. 각 경우 전용 프로세서는 특정 유형의 처리 작업에 대한 성능을 향상시킵니다.

OpenShift Container Platform에서는 호환되는 SmartNIC가 있는 베어 메탈 노드에 대한 하드웨어 오프로드를 구성할 수 있습니다. 하드웨어 오프로드는 SR-IOV Network Operator에 의해 구성 및 활성화됩니다.

하드웨어 오프로드는 모든 워크로드 또는 애플리케이션 유형과 호환되지 않습니다. 다음 두 가지 통신 유형만 지원됩니다.

  • pod-to-pod
  • pod-to-service - 서비스는 일반 Pod에서 지원하는 ClusterIP 서비스

모든 경우에서 하드웨어 오프로드는 해당 Pod 및 서비스가 호환되는 SmartNIC 노드에 할당되는 경우에만 수행됩니다. 예를 들어 하드웨어 오프로드가 있는 노드의 Pod가 일반 노드에서 서비스와 통신하려고 한다고 가정합니다. 일반 노드에서 모든 처리가 커널에서 수행되므로 pod-to-service 통신의 전반적인 성능은 해당 일반 노드의 최대 성능으로 제한됩니다. 하드웨어 오프로드는 DPDK 애플리케이션과 호환되지 않습니다.

노드에서 하드웨어 오프로드를 활성화하지만 사용할 Pod를 구성하지 않으면 Pod 트래픽에 대한 처리량 성능이 저하될 수 있습니다. OpenShift Container Platform에서 관리하는 Pod의 하드웨어 오프로드는 구성할 수 없습니다.

24.12.2. 지원되는 장치

하드웨어 오프로드는 다음 네트워크 인터페이스 컨트롤러에서 지원됩니다.

표 24.15. 지원되는 네트워크 인터페이스 컨트롤러
제조업체모델벤더 ID장치 ID

Mellanox

MT27800 제품군 [ConnectX-5]

15b3

1017

Mellanox

MT28880 제품군 [ConnectX-5 Ex]

15b3

1019

Mellanox

MT2892 제품군 [ConnectX-6 Dx]

15b3

101d

Mellanox

MT2894 제품군 [ConnectX-6 Lx]

15b3

101f

Mellanox

MT42822 ConnectX-6 NIC 모드 BlueField-2

15b3

a2d6

24.12.3. 사전 요구 사항

24.12.4. SR-IOV Network Operator를 systemd 모드로 설정

하드웨어 오프로드를 지원하려면 먼저 SR-IOV Network Operator를 systemd 모드로 설정해야 합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 역할이 있는 사용자로 클러스터에 액세스할 수 있습니다.

절차

  1. SriovOperatorConfig CR(사용자 정의 리소스)을 생성하여 모든 SR-IOV Operator 구성 요소를 배포합니다.

    1. 다음 YAML이 포함된 sriovOperatorConfig.yaml 파일을 생성합니다.

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovOperatorConfig
      metadata:
        name: default 1
        namespace: openshift-sriov-network-operator
      spec:
        enableInjector: true
        enableOperatorWebhook: true
        configurationMode: "systemd" 2
        logLevel: 2
      1
      SriovOperatorConfig 리소스에 대한 유일한 유효한 이름은 default 이며 Operator가 배포된 네임스페이스에 있어야 합니다.
      2
      SR-IOV Network Operator를 systemd 모드로 설정하는 것은 Open vSwitch 하드웨어 오프로드에만 관련이 있습니다.
    2. 다음 명령을 실행하여 리소스를 생성합니다.

      $ oc apply -f sriovOperatorConfig.yaml

24.12.5. 하드웨어 오프로드를 위한 머신 구성 풀 구성

하드웨어 오프로드를 활성화하기 위해 전용 머신 구성 풀을 생성하고 SR-IOV Network Operator에서 작동하도록 구성합니다.

사전 요구 사항

  1. SR-IOV Network Operator가 설치되어 systemd 모드로 설정됩니다.

절차

  1. 하드웨어 오프로드를 사용할 머신의 머신 구성 풀을 생성합니다.

    1. 다음 예와 같은 콘텐츠를 사용하여 mcp-offloading.yaml 과 같은 파일을 생성합니다.

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfigPool
      metadata:
        name: mcp-offloading 1
      spec:
        machineConfigSelector:
          matchExpressions:
            - {key: machineconfiguration.openshift.io/role, operator: In, values: [worker,mcp-offloading]} 2
        nodeSelector:
          matchLabels:
            node-role.kubernetes.io/mcp-offloading: "" 3
      1 2
      하드웨어 오프로드를 위한 머신 구성 풀의 이름입니다.
      3
      이 노드 역할 레이블은 머신 구성 풀에 노드를 추가하는 데 사용됩니다.
    2. 머신 구성 풀의 구성을 적용합니다.

      $ oc create -f mcp-offloading.yaml
  2. 머신 구성 풀에 노드를 추가합니다. 풀의 노드 역할 라벨을 사용하여 각 노드에 레이블을 지정합니다.

    $ oc label node worker-2 node-role.kubernetes.io/mcp-offloading=""
  3. 선택 사항: 새 풀이 생성되었는지 확인하려면 다음 명령을 실행합니다.

    $ oc get nodes

    출력 예

    NAME       STATUS   ROLES                   AGE   VERSION
    master-0   Ready    master                  2d    v1.26.0
    master-1   Ready    master                  2d    v1.26.0
    master-2   Ready    master                  2d    v1.26.0
    worker-0   Ready    worker                  2d    v1.26.0
    worker-1   Ready    worker                  2d    v1.26.0
    worker-2   Ready    mcp-offloading,worker   47h   v1.26.0
    worker-3   Ready    mcp-offloading,worker   47h   v1.26.0

  4. 이 머신 구성 풀을 SriovNetworkPoolConfig 사용자 정의 리소스에 추가합니다.

    1. 다음 예와 같은 콘텐츠를 사용하여 sriov-pool-config.yaml 과 같은 파일을 생성합니다.

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetworkPoolConfig
      metadata:
        name: sriovnetworkpoolconfig-offload
        namespace: openshift-sriov-network-operator
      spec:
        ovsHardwareOffloadConfig:
          name: mcp-offloading 1
      1
      하드웨어 오프로드를 위한 머신 구성 풀의 이름입니다.
    2. 설정을 적용합니다.

      $ oc create -f <SriovNetworkPoolConfig_name>.yaml
      참고

      SriovNetworkPoolConfig 오브젝트에 지정된 구성을 적용하면 SR-IOV Operator가 머신 구성 풀에서 노드를 비우고 재시작합니다.

      구성 변경 사항을 적용하는 데 몇 분이 걸릴 수 있습니다.

24.12.6. SR-IOV 네트워크 노드 정책 구성

SR-IOV 네트워크 노드 정책을 생성하여 노드의 SR-IOV 네트워크 장치 구성을 생성할 수 있습니다. 하드웨어 오프로드를 활성화하려면 "switchdev" 값으로 .spec.eSwitchMode 필드를 정의해야 합니다.

다음 절차에서는 하드웨어 오프로드가 있는 네트워크 인터페이스 컨트롤러에 대한 SR-IOV 인터페이스를 생성합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

절차

  1. 다음 예와 같은 콘텐츠를 사용하여 sriov-node-policy.yaml 과 같은 파일을 생성합니다.

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: sriov-node-policy <.>
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice <.>
      eSwitchMode: "switchdev" <.>
      nicSelector:
        deviceID: "1019"
        rootDevices:
        - 0000:d8:00.0
        vendor: "15b3"
        pfNames:
        - ens8f0
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: "true"
      numVfs: 6
      priority: 5
      resourceName: mlxnics

    <.> 사용자 정의 리소스 오브젝트의 이름입니다. <.> 필수 항목입니다. vfio-pci. <.> 필수에서는 하드웨어 오프로드가 지원되지 않습니다.

  2. 정책에 대한 구성을 적용합니다.

    $ oc create -f sriov-node-policy.yaml
    참고

    SriovNetworkPoolConfig 오브젝트에 지정된 구성을 적용하면 SR-IOV Operator가 머신 구성 풀에서 노드를 비우고 재시작합니다.

    구성 변경 사항을 적용하는 데 몇 분이 걸릴 수 있습니다.

24.12.6.1. OpenStack의 SR-IOV 네트워크 노드 정책의 예

다음 예제에서는 RHOSP(Red Hat OpenStack Platform)에서 하드웨어를 오프로드하는 NIC(네트워크 인터페이스 컨트롤러)의 SR-IOV 인터페이스를 설명합니다.

RHOSP에서 하드웨어 오프로드가 있는 NIC용 SR-IOV 인터페이스

apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetworkNodePolicy
metadata:
  name: ${name}
  namespace: openshift-sriov-network-operator
spec:
  deviceType: switchdev
  isRdma: true
  nicSelector:
    netFilter: openstack/NetworkID:${net_id}
  nodeSelector:
    feature.node.kubernetes.io/network-sriov.capable: 'true'
  numVfs: 1
  priority: 99
  resourceName: ${name}

24.12.7. 네트워크 연결 정의 생성

머신 구성 풀과 SR-IOV 네트워크 노드 정책을 정의한 후 사용자가 지정한 네트워크 인터페이스 카드에 대한 네트워크 연결 정의를 생성할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

절차

  1. 다음 예와 같은 콘텐츠를 사용하여 net-attach-def.yaml 과 같은 파일을 생성합니다.

    apiVersion: "k8s.cni.cncf.io/v1"
    kind: NetworkAttachmentDefinition
    metadata:
      name: net-attach-def <.>
      namespace: net-attach-def <.>
      annotations:
        k8s.v1.cni.cncf.io/resourceName: openshift.io/mlxnics <.>
    spec:
      config: '{"cniVersion":"0.3.1","name":"ovn-kubernetes","type":"ovn-k8s-cni-overlay","ipam":{},"dns":{}}'

    <.> 네트워크 연결 정의의 이름입니다. <.> 네트워크 연결 정의의 네임스페이스입니다. <.> SriovNetworkNodePolicy 오브젝트에 지정한 spec.resourceName 필드의 값입니다.

  2. 네트워크 연결 정의에 대한 구성을 적용합니다.

    $ oc create -f net-attach-def.yaml

검증

  • 다음 명령을 실행하여 새 정의가 있는지 확인합니다.

    $ oc get net-attach-def -A

    출력 예

    NAMESPACE         NAME             AGE
    net-attach-def    net-attach-def   43h

24.12.8. Pod에 네트워크 연결 정의 추가

머신 구성 풀, SriovNetworkPoolConfigSriovNetworkNodePolicy 사용자 정의 리소스 및 네트워크 연결 정의를 생성한 후 Pod 사양에 네트워크 연결 정의를 추가하여 Pod에 이러한 구성을 적용할 수 있습니다.

절차

  • Pod 사양에서 .metadata.annotations.k8s.v1.cni.cncf.io/networks 필드를 추가하고 하드웨어 오프로드를 위해 생성한 네트워크 연결 정의를 지정합니다.

    ....
    metadata:
      annotations:
        v1.multus-cni.io/default-network: net-attach-def/net-attach-def <.>

    <.> 값은 하드웨어 오프로드를 위해 생성한 네트워크 연결 정의의 이름과 네임스페이스여야 합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.