8.2. SR-IOV 지원 워크로드에 대한 QinQ 지원 구성
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있습니다. -
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - SR-IOV Network Operator가 설치되어 있습니다.
프로세스
다음 콘텐츠를 사용하여
sriovnetpolicy-810-sriov-node-network.yaml이라는 파일을 생성합니다.apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetworkNodePolicy metadata: name: sriovnetpolicy-810 namespace: openshift-sriov-network-operator spec: deviceType: netdevice nicSelector: pfNames: - ens5f0#0-9 nodeSelector: node-role.kubernetes.io/worker-cnf: "" numVfs: 10 priority: 99 resourceName: resource810다음 명령을 실행하여
SriovNetworkNodePolicy오브젝트를 생성합니다.$ oc create -f sriovnetpolicy-810-sriov-node-network.yaml별도의 터미널 창을 열고 다음 명령을 실행하여
openshift-sriov-network-operator네임스페이스에 지정된 노드에 대한 SR-IOV 네트워크 노드 상태의 동기화 상태를 모니터링합니다.$ watch -n 1 'oc get sriovnetworknodestates -n openshift-sriov-network-operator <node_name> -o jsonpath="{.status.syncStatus}"'동기화 상태는
InProgress에서Succeeded로 변경되었음을 나타냅니다.SriovNetwork오브젝트를 생성하고 인프라에 속하므로 S-tag 또는Service Tag라는 외부 VLAN을 설정합니다.중요스위치의 트렁크 인터페이스에서 VLAN을 구성해야 합니다. 또한 QinQ 태그를 지원하도록 일부 스위치를 추가로 구성해야 할 수도 있습니다.
다음 콘텐츠를 사용하여
nad-sriovnetwork-1ad-810.yaml이라는 파일을 생성합니다.apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetwork metadata: name: sriovnetwork-1ad-810 namespace: openshift-sriov-network-operator spec: ipam: '{}' vlan: 1711 vlanProto: "802.1ad"2 networkNamespace: default resourceName: resource810다음 명령을 실행하여 오브젝트를 생성합니다.
$ oc create -f nad-sriovnetwork-1ad-810.yaml
내부 VLAN을 사용하여
NetworkAttachmentDefinition오브젝트를 생성합니다. 내부 VLAN은 종종 네트워크 기능에 속하므로 C 태그 또는고객태그라고 합니다.다음 콘텐츠를 사용하여
nad-cvlan100.yaml이라는 파일을 생성합니다.apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: nad-cvlan100 namespace: default spec: config: '{ "name": "vlan-100", "cniVersion": "0.3.1", "type": "vlan", "linkInContainer": true, "master": "net1",1 "vlanId": 100, "ipam": {"type": "static"} }'- 1
- Pod 내부의 VF 인터페이스를 지정합니다. 기본 이름은
net1이며 이름은 Pod 주석에 설정되지 않습니다.
다음 명령을 실행하여 YAML 파일을 적용합니다.
$ oc apply -f nad-cvlan100.yaml
검증
다음 절차에 따라 노드에서 QinQ가 활성화되어 있는지 확인합니다.
다음 콘텐츠를 사용하여
test-qinq-pod.yaml이라는 파일을 생성합니다.apiVersion: v1 kind: Pod metadata: name: test-pod annotations: k8s.v1.cni.cncf.io/networks: sriovnetwork-1ad-810, nad-cvlan100 spec: containers: - name: test-container image: quay.io/ocp-edge-qe/cnf-gotests-client:v4.10 imagePullPolicy: Always securityContext: privileged: true다음 명령을 실행하여 테스트 Pod를 생성합니다.
$ oc create -f test-qinq-pod.yamlPod가 있는 대상 노드에서 디버그 세션에 들어가 다음 명령을 실행하여 네트워크 인터페이스
ens5f0에 대한 정보를 표시합니다.$ oc debug node/my-cluster-node -- bash -c "ip link show ens5f0"출력 예
6: ens5f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether b4:96:91:a5:22:10 brd ff:ff:ff:ff:ff:ff vf 0 link/ether a2:81:ba:d0:6f:f3 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off vf 1 link/ether 8a:bb:0a:36:f2:ed brd ff:ff:ff:ff:ff:ff, vlan 171, vlan protocol 802.1ad, spoof checking on, link-state auto, trust off vf 2 link/ether ca:0e:e1:5b:0c:d2 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off vf 3 link/ether ee:6c:e2:f5:2c:70 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off vf 4 link/ether 0a:d6:b7:66:5e:e8 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off vf 5 link/ether da:d5:e7:14:4f:aa brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off vf 6 link/ether d6:8e:85:75:12:5c brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off vf 7 link/ether d6:eb:ce:9c:ea:78 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off vf 8 link/ether 5e:c5:cc:05:93:3c brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust on vf 9 link/ether a6:5a:7c:1c:2a:16 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off출력의
vlan 프로토콜 802.1adID는 인터페이스가 프로토콜 802.1ad(QinQ)를 사용하여 VLAN 태그 지정을 지원함을 나타냅니다. VLAN ID는 171입니다.