25.12. 하드웨어 오프로드 구성
클러스터 관리자는 호환 가능한 노드에서 하드웨어 오프로드를 구성하여 데이터 처리 성능을 높이고 호스트 CPU의 부하를 줄일 수 있습니다.
25.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 서비스
모든 경우에서 하드웨어 오프로드는 호환되는 SmartNIC가 있는 노드에 해당 Pod 및 서비스가 할당된 경우에만 수행됩니다. 예를 들어 하드웨어 오프로드가 있는 노드의 Pod가 일반 노드에서 서비스와 통신하려고 한다고 가정합니다. 일반 노드에서 모든 처리가 커널에서 수행되므로 pod-to-service 통신의 전반적인 성능은 해당 일반 노드의 최대 성능으로 제한됩니다. 하드웨어 오프로드는 DPDK 애플리케이션과 호환되지 않습니다.
노드에서 하드웨어 오프로드를 활성화하지만 사용할 Pod를 구성하지 않으면 Pod 트래픽의 처리량 성능이 저하될 수 있습니다. OpenShift Container Platform에서 관리하는 Pod의 하드웨어 오프로드를 구성할 수 없습니다.
25.12.2. 지원되는 장치 링크 복사링크가 클립보드에 복사되었습니다!
하드웨어 오프로드는 다음 네트워크 인터페이스 컨트롤러에서 지원됩니다.
제조업체 | 모델 | 벤더 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 BlueField-2 in ConnectX-6 NIC 모드 | 15b3 | a2d6 |
25.12.3. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 클러스터에는 하드웨어 오프로드에 지원되는 네트워크 인터페이스 컨트롤러가 있는 하나 이상의 베어 메탈 머신이 있습니다.
- SR-IOV Network Operator가 설치되어 있어야 합니다.
- 클러스터는 OVN-Kubernetes 네트워크 플러그인 을 사용합니다.
-
OVN-Kubernetes 네트워크 플러그인 구성에서
gatewayConfig.routingViaHost
필드가false
로 설정됩니다.
25.12.4. 하드웨어 오프로드를 위한 머신 구성 풀 구성 링크 복사링크가 클립보드에 복사되었습니다!
하드웨어 오프로드를 활성화하려면 먼저 전용 머신 구성 풀을 생성하고 SR-IOV Network Operator에서 작동하도록 구성해야 합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
에서 하드웨어 오프로드를 사용할 머신의 머신 구성 풀을 생성합니다.
다음 예와 같은 콘텐츠를 사용하여
mcp-offloading.yaml
과 같은 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 머신 구성 풀의 구성을 적용합니다.
oc create -f mcp-offloading.yaml
$ oc create -f mcp-offloading.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
머신 구성 풀에 노드를 추가합니다. 각 노드에 풀의 노드 역할 라벨을 지정합니다.
oc label node worker-2 node-role.kubernetes.io/mcp-offloading=""
$ oc label node worker-2 node-role.kubernetes.io/mcp-offloading=""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 새 풀이 생성되었는지 확인하려면 다음 명령을 실행합니다.
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 머신 구성 풀을
SriovNetworkPoolConfig
사용자 정의 리소스에 추가합니다.다음 예와 같은 콘텐츠를 사용하여
sriov-pool-config.yaml
과 같은 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 하드웨어 오프로드를 위한 머신 구성 풀의 이름입니다.
설정을 적용합니다.
oc create -f <SriovNetworkPoolConfig_name>.yaml
$ oc create -f <SriovNetworkPoolConfig_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고SriovNetworkPoolConfig
오브젝트에 지정된 구성을 적용하면 SR-IOV Operator가 머신 구성 풀에서 노드를 비우고 재시작합니다.구성 변경 사항을 적용하는 데 몇 분이 걸릴 수 있습니다.
25.12.5. SR-IOV 네트워크 노드 정책 구성 링크 복사링크가 클립보드에 복사되었습니다!
SR-IOV 네트워크 노드 정책을 생성하여 노드의 SR-IOV 네트워크 장치 구성을 생성할 수 있습니다. 하드웨어 오프로드를 활성화하려면 "switchdev"
값으로 .spec.eSwitchMode
필드를 정의해야 합니다.
다음 절차에서는 하드웨어 오프로드를 사용하여 네트워크 인터페이스 컨트롤러에 대한 SR-IOV 인터페이스를 생성합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
다음 예와 같은 콘텐츠를 사용하여
sriov-node-policy.yaml
과 같은 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 정책 구성을 적용합니다.
oc create -f sriov-node-policy.yaml
$ oc create -f sriov-node-policy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고SriovNetworkPoolConfig
오브젝트에 지정된 구성을 적용하면 SR-IOV Operator가 머신 구성 풀에서 노드를 비우고 재시작합니다.구성 변경 사항을 적용하는 데 몇 분이 걸릴 수 있습니다.
25.12.5.1. OpenStack의 SR-IOV 네트워크 노드 정책의 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 RHOSP(Red Hat OpenStack Platform)에서 하드웨어 오프로드가 있는 NIC(네트워크 인터페이스 컨트롤러)의 SR-IOV 인터페이스를 설명합니다.
RHOSP에서 하드웨어 오프로드가 있는 NIC용 SR-IOV 인터페이스
25.12.6. 가상 기능을 사용하여 네트워크 트래픽 성능 개선 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 OVN-Kubernetes 관리 포트에 가상 기능을 할당하고 네트워크 트래픽 성능을 향상시킵니다.
이 절차에서는 두 개의 풀이 생성됩니다. 첫 번째 풀에는 OVN-Kubernetes에서 사용하는 가상 기능이 있고 두 번째는 나머지 가상 함수로 구성됩니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
다음 명령을 실행하여 SmartNIC를 사용하여 각 작업자 노드에
network.operator.openshift.io/smart-nic
레이블을 추가합니다.oc label node <node-name> network.operator.openshift.io/smart-nic=
$ oc label node <node-name> network.operator.openshift.io/smart-nic=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get nodes
명령을 사용하여 사용 가능한 노드 목록을 가져옵니다.다음 예와 같은 콘텐츠를 사용하여 관리 포트에 대해
sriov-node-mgmt-vf-policy.yaml
이라는 정책을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 같은 콘텐츠를 사용하여
sriov-node-policy.yaml
이라는 정책을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고sriov-node-mgmt-vf-policy.yaml
파일에는sriov-node-policy.yaml
파일과 함께pfNames
및resourceName
키에 대해 다른 값이 있습니다.두 정책에 모두 구성을 적용합니다.
oc create -f sriov-node-policy.yaml
$ oc create -f sriov-node-policy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f sriov-node-mgmt-vf-policy.yaml
$ oc create -f sriov-node-mgmt-vf-policy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 관리 구성을 위해 클러스터에 CNO(Cluster Network Operator) ConfigMap을 생성합니다.
다음 콘텐츠를 사용하여
hardware-offload-config.yaml
이라는 ConfigMap을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap의 구성을 적용합니다.
oc create -f hardware-offload-config.yaml
$ oc create -f hardware-offload-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.12.7. 네트워크 연결 정의 생성 링크 복사링크가 클립보드에 복사되었습니다!
머신 구성 풀과 SR-IOV 네트워크 노드 정책을 정의한 후 지정한 네트워크 인터페이스 카드에 대한 네트워크 연결 정의를 생성할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
다음 예와 같은 콘텐츠를 사용하여
net-attach-def.yaml
과 같은 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 네트워크 연결 정의에 대한 구성을 적용합니다.
oc create -f net-attach-def.yaml
$ oc create -f net-attach-def.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여 새 정의가 있는지 확인합니다.
oc get net-attach-def -A
$ oc get net-attach-def -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAMESPACE NAME AGE net-attach-def net-attach-def 43h
NAMESPACE NAME AGE net-attach-def net-attach-def 43h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.12.8. Pod에 네트워크 연결 정의 추가 링크 복사링크가 클립보드에 복사되었습니다!
머신 구성 풀, SriovNetworkPoolConfig
및 SriovNetworkNodePolicy
사용자 정의 리소스 및 네트워크 연결 정의를 생성한 후 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
.... metadata: annotations: v1.multus-cni.io/default-network: net-attach-def/net-attach-def
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 값은 하드웨어 오프로드를 위해 생성한 네트워크 연결 정의의 이름과 네임스페이스여야 합니다.