검색

8.5. SR-IOV 네트워크에 가상 머신 연결

download PDF

다음 단계를 수행하여 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 네트워크 장치 구성에 대한 컨트롤 플레인 노드를 선택하지 않았습니다.

절차

  1. 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의 값도 지정해야 합니다. pfNamesrootDevices를 동시에 지정하는 경우 동일한 장치를 가리키는지 확인하십시오.
    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 카드의 경우 isRdmafalse로 설정합니다. 기본값은 false입니다.
    참고

    isRDMA 플래그가 true로 설정된 경우 RDMA 가능 VF를 일반 네트워크 장치로 계속 사용할 수 있습니다. 어느 모드에서나 장치를 사용할 수 있습니다.

  2. 선택 사항: SriovNetworkNodePolicy.Spec.NodeSelector 를 사용하여 SR-IOV 가능 클러스터 노드에 레이블을 지정하지 않은 경우 레이블을 지정합니다. 노드 레이블 지정에 대한 자세한 내용은 "노드에서 라벨을 업데이트하는 방법 이해"를 참조하십시오.
  3. SriovNetworkNodePolicy 오브젝트를 생성합니다.

    $ oc create -f <name>-sriov-node-network.yaml

    <name>은 이 구성의 이름을 지정합니다.

    구성 업데이트를 적용하면 sriov-network-operator 네임스페이스의 모든 Pod가 Running 상태로 전환됩니다.

  4. 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 권한이 있는 사용자로 로그인합니다.

절차

  1. 다음 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, disableauto입니다.
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>를 이 네트워크에 구성할 수 있는 기능으로 바꿉니다.
  1. 오브젝트를 생성하려면 다음 명령을 입력합니다. <name>을 이 추가 네트워크의 이름으로 변경합니다.

    $ oc create -f <name>-sriov-network.yaml
  2. 선택 사항: 이전 단계에서 생성한 SriovNetwork 오브젝트에 연결된 NetworkAttachmentDefinition 오브젝트가 존재하는지 확인하려면 다음 명령을 입력합니다. <namespace>SriovNetwork 오브젝트에 지정한 네임스페이스로 바꿉니다.

    $ oc get net-attach-def -n <namespace>

8.5.3. 명령줄을 사용하여 가상 머신을 SR-IOV 네트워크에 연결

VM 구성에 네트워크 세부 정보를 포함하여 VM(가상 머신)을 SR-IOV 네트워크에 연결할 수 있습니다.

프로세스

  1. 다음 예와 같이 VM 구성의 spec.domain.devices.interfacesspec.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
    # ...
    1
    SR-IOV 인터페이스의 고유 이름을 지정합니다.
    2
    SR-IOV 인터페이스의 이름을 지정합니다. 이전에 정의한 interfaces.name과 동일해야 합니다.
    3
    SR-IOV 네트워크 연결 정의의 이름을 지정합니다.
  2. 가상 머신 구성을 적용합니다.

    $ oc apply -f <vm_sriov>.yaml 1
    1
    가상 머신 YAML 파일의 이름입니다.

8.5.4. 웹 콘솔을 사용하여 SR-IOV 네트워크에 VM 연결

VM 구성에 네트워크 세부 정보를 포함하여 VM을 SR-IOV 네트워크에 연결할 수 있습니다.

사전 요구 사항

  • 네트워크에 대한 네트워크 연결 정의를 생성해야 합니다.

프로세스

  1. 가상화 VirtualMachines 로 이동합니다.
  2. VM을 클릭하여 VirtualMachine 세부 정보 페이지를 확인합니다.
  3. 구성 탭에서 네트워크 인터페이스 탭을 클릭합니다.
  4. 네트워크 인터페이스 추가를 클릭합니다.
  5. 인터페이스 이름을 입력합니다.
  6. 네트워크 목록에서 SR-IOV 네트워크 연결 정의를 선택합니다.
  7. 유형 목록에서 SR-IOV 를 선택합니다.
  8. 선택 사항: 네트워크 모델 또는 Mac 주소를 추가합니다.
  9. 저장을 클릭합니다.
  10. VM을 다시 시작하거나 실시간 마이그레이션하여 변경 사항을 적용합니다.

8.5.5. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.