5.9. 워크로드 포드 생성
이 섹션의 절차를 사용하여 공유 및 호스트 장치에 대한 작업 부하 포드를 생성합니다.
5.9.2. RoCE에서 호스트 장치 RDMA 생성 링크 복사링크가 클립보드에 복사되었습니다!
NVIDIA 네트워크 운영자를 위한 호스트 장치 원격 직접 메모리 액세스(RDMA)에 대한 워크로드 포드를 만들고 포드 구성을 테스트합니다.
사전 요구 사항
- Operator가 실행 중인지 확인하세요.
-
NicClusterPolicy사용자 정의 리소스(CR)가 있는 경우 삭제합니다.
프로세스
아래와 같이 새로운 호스트 장치
NicClusterPolicy(CR)를 생성합니다.$ cat <<EOF > network-hostdev-nic-cluster-policy.yaml apiVersion: mellanox.com/v1alpha1 kind: NicClusterPolicy metadata: name: nic-cluster-policy spec: ofedDriver: image: doca-driver repository: nvcr.io/nvidia/mellanox version: 24.10-0.7.0.0-0 startupProbe: initialDelaySeconds: 10 periodSeconds: 20 livenessProbe: initialDelaySeconds: 30 periodSeconds: 30 readinessProbe: initialDelaySeconds: 10 periodSeconds: 30 env: - name: UNLOAD_STORAGE_MODULES value: "true" - name: RESTORE_DRIVER_ON_POD_TERMINATION value: "true" - name: CREATE_IFNAMES_UDEV value: "true" sriovDevicePlugin: image: sriov-network-device-plugin repository: ghcr.io/k8snetworkplumbingwg version: v3.7.0 config: | { "resourceList": [ { "resourcePrefix": "nvidia.com", "resourceName": "hostdev", "selectors": { "vendors": ["15b3"], "isRdma": true } } ] } EOF다음 명령을 사용하여 클러스터에
NicClusterPolicyCR을 만듭니다.$ oc create -f network-hostdev-nic-cluster-policy.yaml출력 예
nicclusterpolicy.mellanox.com/nic-cluster-policy created다음 명령을 DOCA/MOFED 컨테이너에서 사용하여 호스트 장치
NicClusterPolicyCR을 확인하세요.$ oc get pods -n nvidia-network-operator출력 예
NAME READY STATUS RESTARTS AGE mofed-rhcos4.16-696886fcb4-ds-9sgvd 2/2 Running 0 2m37s mofed-rhcos4.16-696886fcb4-ds-lkjd4 2/2 Running 0 2m37s nvidia-network-operator-controller-manager-68d547dbbd-qsdkf 1/1 Running 0 141m sriov-device-plugin-6v2nz 1/1 Running 0 2m14s sriov-device-plugin-hc4t8 1/1 Running 0 2m14s다음 명령을 사용하여 리소스가 클러스터
oc describe node섹션에 나타나는지 확인하세요.$ oc describe node -l node-role.kubernetes.io/worker=| grep -E 'Capacity:|Allocatable:' -A7출력 예
Capacity: cpu: 128 ephemeral-storage: 1561525616Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 263596708Ki nvidia.com/hostdev: 2 pods: 250 Allocatable: cpu: 127500m ephemeral-storage: 1438028263499 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 262445732Ki nvidia.com/hostdev: 2 pods: 250 -- Capacity: cpu: 128 ephemeral-storage: 1561525616Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 263596704Ki nvidia.com/hostdev: 2 pods: 250 Allocatable: cpu: 127500m ephemeral-storage: 1438028263499 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 262445728Ki nvidia.com/hostdev: 2 pods: 250HostDeviceNetworkCR 파일을 만듭니다.$ cat <<EOF > hostdev-network.yaml apiVersion: mellanox.com/v1alpha1 kind: HostDeviceNetwork metadata: name: hostdev-net spec: networkNamespace: "default" resourceName: "hostdev" ipam: | { "type": "whereabouts", "range": "192.168.3.225/28", "exclude": [ "192.168.3.229/30", "192.168.3.236/32" ] } EOF다음 명령을 사용하여 클러스터에
HostDeviceNetwork리소스를 만듭니다.$ oc create -f hostdev-network.yaml출력 예
hostdevicenetwork.mellanox.com/hostdev-net created다음 명령을 사용하여 리소스가 클러스터
oc describe node섹션에 나타나는지 확인하세요.$ oc describe node -l node-role.kubernetes.io/worker=| grep -E 'Capacity:|Allocatable:' -A8출력 예
Capacity: cpu: 128 ephemeral-storage: 1561525616Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 263596708Ki nvidia.com/gpu: 2 nvidia.com/hostdev: 2 pods: 250 Allocatable: cpu: 127500m ephemeral-storage: 1438028263499 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 262445732Ki nvidia.com/gpu: 2 nvidia.com/hostdev: 2 pods: 250 -- Capacity: cpu: 128 ephemeral-storage: 1561525616Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 263596680Ki nvidia.com/gpu: 2 nvidia.com/hostdev: 2 pods: 250 Allocatable: cpu: 127500m ephemeral-storage: 1438028263499 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 262445704Ki nvidia.com/gpu: 2 nvidia.com/hostdev: 2 pods: 250
5.9.3. RoCE에서 SR-IOV 레거시 모드 RDMA 생성 링크 복사링크가 클립보드에 복사되었습니다!
RoCE에서 단일 루트 I/O 가상화(SR-IOV) 레거시 모드 호스트 장치 RDMA를 구성합니다.
프로세스
새로운 호스트 장치
NicClusterPolicy사용자 정의 리소스(CR)를 생성합니다.$ cat <<EOF > network-sriovleg-nic-cluster-policy.yaml apiVersion: mellanox.com/v1alpha1 kind: NicClusterPolicy metadata: name: nic-cluster-policy spec: ofedDriver: image: doca-driver repository: nvcr.io/nvidia/mellanox version: 24.10-0.7.0.0-0 startupProbe: initialDelaySeconds: 10 periodSeconds: 20 livenessProbe: initialDelaySeconds: 30 periodSeconds: 30 readinessProbe: initialDelaySeconds: 10 periodSeconds: 30 env: - name: UNLOAD_STORAGE_MODULES value: "true" - name: RESTORE_DRIVER_ON_POD_TERMINATION value: "true" - name: CREATE_IFNAMES_UDEV value: "true" EOF다음 명령을 사용하여 클러스터에 대한 정책을 만듭니다.
$ oc create -f network-sriovleg-nic-cluster-policy.yaml출력 예
nicclusterpolicy.mellanox.com/nic-cluster-policy createdDOCA/MOFED 컨테이너에서 다음 명령을 사용하여 포드를 확인하세요.
$ oc get pods -n nvidia-network-operator출력 예
NAME READY STATUS RESTARTS AGE mofed-rhcos4.16-696886fcb4-ds-4mb42 2/2 Running 0 40s mofed-rhcos4.16-696886fcb4-ds-8knwq 2/2 Running 0 40s nvidia-network-operator-controller-manager-68d547dbbd-qsdkf 1/1 Running 13 (4d ago) 4d21hSR-IOV 레거시 모드에서 작동하려는 장치에 대한 가상 기능(VF)을 생성하는
SriovNetworkNodePolicyCR을 만듭니다. 다음 예제를 참조하십시오.$ cat <<EOF > sriov-network-node-policy.yaml apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetworkNodePolicy metadata: name: sriov-legacy-policy namespace: openshift-sriov-network-operator spec: deviceType: netdevice mtu: 1500 nicSelector: vendor: "15b3" pfNames: ["ens8f0np0#0-7"] nodeSelector: feature.node.kubernetes.io/pci-15b3.present: "true" numVfs: 8 priority: 90 isRdma: true resourceName: sriovlegacy EOF다음 명령을 사용하여 클러스터에 CR을 만듭니다.
참고SR-IOV 글로벌 활성화가 활성화되어 있는지 확인하세요. 자세한 내용은 Red Hat Enterprise Linux에서 SR-IOV를 활성화할 수 없고 "SR-IOV에 대한 MMIO 리소스가 충분하지 않습니다"라는 메시지가 표시됨을 참조하세요.
$ oc create -f sriov-network-node-policy.yaml출력 예
sriovnetworknodepolicy.sriovnetwork.openshift.io/sriov-legacy-policy created각 노드의 스케줄링이 비활성화되었습니다. 구성을 적용하려면 노드를 재부팅합니다. 다음 명령을 사용하여 노드를 볼 수 있습니다.
$ oc get nodes출력 예
NAME STATUS ROLES AGE VERSION edge-19.edge.lab.eng.rdu2.redhat.com Ready control-plane,master,worker 5d v1.29.8+632b078 nvd-srv-32.nvidia.eng.rdu2.dc.redhat.com Ready worker 4d22h v1.29.8+632b078 nvd-srv-33.nvidia.eng.rdu2.dc.redhat.com NotReady,SchedulingDisabled worker 4d22h v1.29.8+632b078노드가 재부팅된 후 각 노드에서 디버그 포드를 열어 VF 인터페이스가 있는지 확인합니다. 다음 명령을 실행합니다.
a$ oc debug node/nvd-srv-33.nvidia.eng.rdu2.dc.redhat.com출력 예
Starting pod/nvd-srv-33nvidiaengrdu2dcredhatcom-debug-cqfjz ... To use host binaries, run `chroot /host` Pod IP: 10.6.135.12 If you don't see a command prompt, try pressing enter. sh-5.1# chroot /host sh-5.1# ip link show | grep ens8 26: ens8f0np0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 42: ens8f0v0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 43: ens8f0v1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 44: ens8f0v2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 45: ens8f0v3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 46: ens8f0v4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 47: ens8f0v5: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 48: ens8f0v6: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 49: ens8f0v7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000- 필요한 경우 두 번째 노드에서 이전 단계를 반복합니다.
선택 사항: 다음 명령을 사용하여 리소스가 클러스터
oc describe node섹션에 나타나는지 확인하세요.$ oc describe node -l node-role.kubernetes.io/worker=| grep -E 'Capacity:|Allocatable:' -A8출력 예
Capacity: cpu: 128 ephemeral-storage: 1561525616Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 263596692Ki nvidia.com/gpu: 2 nvidia.com/hostdev: 0 openshift.io/sriovlegacy: 8 -- Allocatable: cpu: 127500m ephemeral-storage: 1438028263499 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 262445716Ki nvidia.com/gpu: 2 nvidia.com/hostdev: 0 openshift.io/sriovlegacy: 8 -- Capacity: cpu: 128 ephemeral-storage: 1561525616Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 263596688Ki nvidia.com/gpu: 2 nvidia.com/hostdev: 0 openshift.io/sriovlegacy: 8 -- Allocatable: cpu: 127500m ephemeral-storage: 1438028263499 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 262445712Ki nvidia.com/gpu: 2 nvidia.com/hostdev: 0 openshift.io/sriovlegacy: 8SR-IOV 레거시 모드의 VF가 준비되면
SriovNetworkCR 파일을 생성합니다. 다음 예제를 참조하십시오.$ cat <<EOF > sriov-network.yaml apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetwork metadata: name: sriov-network namespace: openshift-sriov-network-operator spec: vlan: 0 networkNamespace: "default" resourceName: "sriovlegacy" ipam: | { "type": "whereabouts", "range": "192.168.3.225/28", "exclude": [ "192.168.3.229/30", "192.168.3.236/32" ] } EOF다음 명령을 사용하여 클러스터에 사용자 지정 리소스를 만듭니다.
$ oc create -f sriov-network.yaml출력 예
sriovnetwork.sriovnetwork.openshift.io/sriov-network created