8.5. SR-IOV 네트워크에 가상 머신 연결
다음 단계를 수행하여 VM(가상 머신)을 SR-IOV(Single Root I/O Virtualization) 네트워크에 연결할 수 있습니다.
8.5.1. SR-IOV 네트워크 장치 구성
SR-IOV Network Operator는 SriovNetworkNodePolicy.sriovnetwork.openshift.io
CustomResourceDefinition을 OpenShift Container Platform에 추가합니다. SriovNetworkNodePolicy CR(사용자 정의 리소스)을 만들어 SR-IOV 네트워크 장치를 구성할 수 있습니다.
SriovNetworkNodePolicy
오브젝트에 지정된 구성을 적용하면 SR-IOV Operator가 노드를 비우고 경우에 따라 노드를 재부팅할 수 있습니다.
구성 변경 사항을 적용하는 데 몇 분이 걸릴 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - SR-IOV Network Operator가 설치되어 있습니다.
- 비운 노드에서 제거된 워크로드를 처리하기 위해 클러스터에 사용 가능한 노드가 충분합니다.
- SR-IOV 네트워크 장치 구성에 대한 컨트롤 플레인 노드를 선택하지 않았습니다.
절차
SriovNetworkNodePolicy
오브젝트를 생성한 후 YAML을<name>-sriov-node-network.yaml
파일에 저장합니다.<name>
을 이 구성의 이름으로 바꿉니다.apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetworkNodePolicy metadata: name: <name> 1 namespace: openshift-sriov-network-operator 2 spec: resourceName: <sriov_resource_name> 3 nodeSelector: feature.node.kubernetes.io/network-sriov.capable: "true" 4 priority: <priority> 5 mtu: <mtu> 6 numVfs: <num> 7 nicSelector: 8 vendor: "<vendor_code>" 9 deviceID: "<device_id>" 10 pfNames: ["<pf_name>", ...] 11 rootDevices: ["<pci_bus_id>", "..."] 12 deviceType: vfio-pci 13 isRdma: false 14
- 1
- CR 오브젝트의 이름을 지정합니다.
- 2
- SR-IOV Operator가 설치된 네임스페이스를 지정합니다.
- 3
- SR-IOV 장치 플러그인의 리소스 이름을 지정합니다. 리소스 이름에 대해 여러
SriovNetworkNodePolicy
오브젝트를 생성할 수 있습니다. - 4
- 구성할 노드를 선택하려면 노드 선택기를 지정합니다. 선택한 노드의 SR-IOV 네트워크 장치만 구성됩니다. SR-IOV CNI(Container Network Interface) 플러그인 및 장치 플러그인은 선택한 노드에만 배포됩니다.
- 5
- 선택 사항:
0
에서99
사이의 정수 값을 지정합니다. 숫자가 작을수록 우선 순위가 높아지므로 우선 순위10
은 우선 순위99
보다 높습니다. 기본값은99
입니다. - 6
- 선택 사항: 가상 기능의 최대 전송 단위(MTU) 값을 지정합니다. 최대 MTU 값은 NIC 모델마다 다를 수 있습니다.
- 7
- SR-IOV 물리적 네트워크 장치에 생성할 가상 기능(VF) 수를 지정합니다. Intel NIC(Network Interface Controller)의 경우 VF 수는 장치에서 지원하는 총 VF보다 클 수 없습니다. Mellanox NIC의 경우 VF 수는
127
보다 클 수 없습니다. - 8
nicSelector
매핑은 Operator가 구성할 이더넷 장치를 선택합니다. 모든 매개변수에 값을 지정할 필요는 없습니다. 의도하지 않게 이더넷 장치를 선택할 가능성을 최소화하기 위해 이더넷 어댑터를 충분히 정밀하게 식별하는 것이 좋습니다.rootDevices
를 지정하면vendor
,deviceID
또는pfNames
의 값도 지정해야 합니다.pfNames
와rootDevices
를 동시에 지정하는 경우 동일한 장치를 가리키는지 확인하십시오.- 9
- 선택 사항: SR-IOV 네트워크 장치의 공급업체 16진 코드를 지정합니다. 허용되는 유일한 값은
8086
또는15b3
입니다. - 10
- 선택 사항: SR-IOV 네트워크 장치의 장치 16진수 코드를 지정합니다. 허용되는 값은
158b
,1015
,1017
입니다. - 11
- 선택 사항:이 매개변수는 이더넷 장치에 대한 하나 이상의 PF(물리적 기능) 이름 배열을 허용합니다.
- 12
- 이 매개변수는 이더넷 장치의 물리적 기능을 위해 하나 이상의 PCI 버스 주소 배열을 허용합니다. 주소를
0000:02: 00.1
형식으로 입력합니다. - 13
vfio-pci
드라이버 유형은 OpenShift Virtualization의 가상 기능에 필요합니다.- 14
- 선택 사항: 원격 직접 메모리 액세스(RDMA) 모드 사용 여부를 지정합니다. Mellanox 카드의 경우
isRdma
를false
로 설정합니다. 기본값은false
입니다.
참고isRDMA
플래그가true
로 설정된 경우 RDMA 가능 VF를 일반 네트워크 장치로 계속 사용할 수 있습니다. 어느 모드에서나 장치를 사용할 수 있습니다.-
선택 사항:
SriovNetworkNodePolicy.Spec.NodeSelector
를 사용하여 SR-IOV 가능 클러스터 노드에 레이블을 지정하지 않은 경우 레이블을 지정합니다. 노드 레이블 지정에 대한 자세한 내용은 "노드에서 라벨을 업데이트하는 방법 이해"를 참조하십시오. SriovNetworkNodePolicy
오브젝트를 생성합니다.$ oc create -f <name>-sriov-node-network.yaml
<name>
은 이 구성의 이름을 지정합니다.구성 업데이트를 적용하면
sriov-network-operator
네임스페이스의 모든 Pod가Running
상태로 전환됩니다.SR-IOV 네트워크 장치가 구성되어 있는지 확인하려면 다음 명령을 입력합니다.
<node_name>
을 방금 구성한 SR-IOV 네트워크 장치가 있는 노드 이름으로 바꿉니다.$ oc get sriovnetworknodestates -n openshift-sriov-network-operator <node_name> -o jsonpath='{.status.syncStatus}'
8.5.2. SR-IOV 추가 네트워크 구성
SriovNetwork
오브젝트를 생성하여 SR-IOV 하드웨어를 사용하는 추가 네트워크를 구성할 수 있습니다.
SriovNetwork
오브젝트를 생성하면 SR-IOV Network Operator가 NetworkAttachmentDefinition
오브젝트를 자동으로 생성합니다.
SriovNetwork
오브젝트가 running
상태의 Pod 또는 가상 머신에 연결된 경우 SriovNetwork 오브젝트를 수정하거나 삭제하지 마십시오.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
절차
-
다음
SriovNetwork
오브젝트를 생성한 후 YAML을<name>-sriov-network.yaml
파일에 저장합니다.<name>
을 이 추가 네트워크의 이름으로 변경합니다.
apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetwork metadata: name: <name> 1 namespace: openshift-sriov-network-operator 2 spec: resourceName: <sriov_resource_name> 3 networkNamespace: <target_namespace> 4 vlan: <vlan> 5 spoofChk: "<spoof_check>" 6 linkState: <link_state> 7 maxTxRate: <max_tx_rate> 8 minTxRate: <min_rx_rate> 9 vlanQoS: <vlan_qos> 10 trust: "<trust_vf>" 11 capabilities: <capabilities> 12
- 1
<name>
을 오브젝트의 이름으로 바꿉니다. SR-IOV Network Operator는 동일한 이름으로NetworkAttachmentDefinition
오브젝트를 생성합니다.- 2
- SR-IOV Network Operator가 설치된 네임스페이스를 지정합니다.
- 3
<sriov_resource_name>
을 이 추가 네트워크에 대한 SR-IOV 하드웨어를 정의하는SriovNetworkNodePolicy
오브젝트의spec.resourceName
매개변수 값으로 바꿉니다.- 4
<target_namespace>
를 SriovNetwork의 대상 네임스페이스로 바꿉니다. 대상 네임스페이스의 pod 또는 가상 머신만 SriovNetwork에 연결할 수 있습니다.- 5
- 선택 사항:
<vlan>
을 추가 네트워크의 VLAN(Virtual LAN) ID로 바꿉니다. 정수 값은0
에서4095
사이여야 합니다. 기본값은0
입니다. - 6
- 선택 사항:
<spoof_check>
를 VF의 위조 확인 모드로 바꿉니다. 허용되는 값은 문자열"on"
및"off"
입니다.중요SR-IOV Network Operator가 지정한 값을 따옴표로 묶거나 CR을 거부해야 합니다.
- 7
- 선택 사항:
<link_state>
를 가상 기능(VF)의 링크 상태로 바꿉니다. 허용되는 값은enable
,disable
및auto
입니다. - 8
- 선택 사항: VF의 경우
<max_tx_rate>
를 최대 전송 속도(Mbps)로 바꿉니다. - 9
- 선택 사항: VF의 경우
<min_tx_rate>
를 최소 전송 속도(Mbps)로 바꿉니다. 이 값은 항상 최대 전송 속도보다 작거나 같아야 합니다.참고인텔 NIC는
minTxRate
매개변수를 지원하지 않습니다. 자세한 내용은 BZ#1772847에서 참조하십시오. - 10
- 선택 사항:
<vlan_qos>
를 VF의 IEEE 802.1p 우선 순위 레벨로 바꿉니다. 기본값은0
입니다. - 11
- 선택 사항:
<trust_vf>
를 VF의 신뢰 모드로 바꿉니다. 허용되는 값은 문자열"on"
및"off"
입니다.중요SR-IOV Network Operator가 지정한 값을 따옴표로 묶거나 CR을 거부해야 합니다.
- 12
- 선택 사항:
<capabilities>
를 이 네트워크에 구성할 수 있는 기능으로 바꿉니다.
오브젝트를 생성하려면 다음 명령을 입력합니다.
<name>
을 이 추가 네트워크의 이름으로 변경합니다.$ oc create -f <name>-sriov-network.yaml
선택 사항: 이전 단계에서 생성한
SriovNetwork
오브젝트에 연결된NetworkAttachmentDefinition
오브젝트가 존재하는지 확인하려면 다음 명령을 입력합니다.<namespace>
를SriovNetwork
오브젝트에 지정한 네임스페이스로 바꿉니다.$ oc get net-attach-def -n <namespace>
8.5.3. 명령줄을 사용하여 가상 머신을 SR-IOV 네트워크에 연결
VM 구성에 네트워크 세부 정보를 포함하여 VM(가상 머신)을 SR-IOV 네트워크에 연결할 수 있습니다.
프로세스
다음 예와 같이 VM 구성의
spec.domain.devices.interfaces
및spec.networks
스탠자에 SR-IOV 네트워크 세부 정보를 추가합니다.apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: example-vm spec: domain: devices: interfaces: - name: nic1 1 sriov: {} networks: - name: nic1 2 multus: networkName: sriov-network 3 # ...
가상 머신 구성을 적용합니다.
$ oc apply -f <vm_sriov>.yaml 1
- 1
- 가상 머신 YAML 파일의 이름입니다.
8.5.4. 웹 콘솔을 사용하여 SR-IOV 네트워크에 VM 연결
VM 구성에 네트워크 세부 정보를 포함하여 VM을 SR-IOV 네트워크에 연결할 수 있습니다.
사전 요구 사항
- 네트워크에 대한 네트워크 연결 정의를 생성해야 합니다.
프로세스
-
가상화
VirtualMachines 로 이동합니다. - VM을 클릭하여 VirtualMachine 세부 정보 페이지를 확인합니다.
- 구성 탭에서 네트워크 인터페이스 탭을 클릭합니다.
- 네트워크 인터페이스 추가를 클릭합니다.
- 인터페이스 이름을 입력합니다.
- 네트워크 목록에서 SR-IOV 네트워크 연결 정의를 선택합니다.
-
유형 목록에서
SR-IOV
를 선택합니다. - 선택 사항: 네트워크 모델 또는 Mac 주소를 추가합니다.
- 저장을 클릭합니다.
- VM을 다시 시작하거나 실시간 마이그레이션하여 변경 사항을 적용합니다.