Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SR-IOV 기반 워크로드를 위한 CN2 Apstra 통합

요약  이 주제에서는 클라우드 네이티브 Contrail Networking Juniper® 가상 네트워크를 SR-IOV 지원 네트워크를 위한 Apstra 매니지드 패브릭으로 확장하는 방법에 대해 설명합니다. 주니퍼 네트웍스 Kubernetes 오케스트레이션 환경에서 릴리스 22.4 이상에서 Contrail Networking 사용하여 이 통합 기능을 지원합니다.

개요

서버의 SR-IOV 지원 NIC는 효율적인 I/O 가상화를 제공하는 데 사용됩니다. SR-IOV 기술을 사용하면 물리적 NIC를 여러 가상 기능으로 분할할 수 있습니다. 이러한 가상 NIC 또는 가상 기능은 vRouter를 통과하는 것이 아니라 패킷을 직접 송수신할 수 있습니다. SR-IOV 서버에 워크로드를 생성하고 가상 기능을 포드에 연결하면 워크로드는 패브릭 언더레이를 직접 사용합니다.

주니퍼 Apstra 사용하여 패브릭을 프로비저닝하여 SR-IOV 워크로드에 필요한 언더레이 연결을 제공합니다. Apstra는 Juniper 데이터센터 네트워크의 설계, 구축 및 운영을 자동화하고 검증하는 인텐트 기반 네트워킹 소프트웨어입니다. CN2를 Apstra 소프트웨어와 통합하여 SR-IOV 포드에 대한 패브릭 언더레이를 프로비저닝할 수 있습니다.

참고:

설명서 의 기본 노드를 참조합니다 . Kubernetes는 마스터 노드를 의미합니다. 기본 노드에 대한 이 가이드의 참조는 Kubernetes 용어의 마스터 노드와 상관분석됩니다.

예: CN2 Kubernetes 구축

그림 1 은 CN2 Kubernetes 구축의 예를 보여줍니다. 이 구축은 Apstra를 사용하여 SR-IOV 포드에 대한 패브릭 언더레이를 프로비저닝합니다. 표 1 에서는 다양한 구성 요소를 설명합니다.

그림 1: CN2 Kubernetes 구축 CN2 Kubernetes Deployment
표 1: CN2 Apstra 구성 요소
구성 요소 설명
SR-IOV 작업자 노드 SR-IOV 작업자 노드는 패브릭의 리프 디바이스에 연결됩니다. CN2 클러스터의 일부인 이러한 노드에는 가상 기능으로 분할되어 포드에 연결할 수 있는 SR-IOV 지원 NIC가 있습니다. SR-IOV 작업자 노드에서 포드를 생성할 때, 포드의 인터페이스는 SR-IOV 지원 NIC의 가상 기능에 연결됩니다.
CN2 Apstra 플러그인 CN2 Apstra 플러그인은 가상 네트워크를 패브릭으로 확장합니다. 이 플러그인은 NAD 생성, 가상 네트워크에 포드 연결, VNR(Virtual Network Router) 생성과 같은 CN2 Kubernetes 이벤트를 수신합니다. 그런 다음 플러그인은 Apstra를 통해 언더레이의 패브릭을 구성합니다.
Apstra Apstra는 패브릭을 프로비저닝하여 SR-IOV 포드에 필요한 언더레이 연결을 제공합니다. Apstra는 또한 어떤 리프 포트가 어떤 작업자 노드에 연결되어 있는지와 관련된 토폴로지 정보를 제공합니다. CN2 Apstra 플러그인은 이 정보를 사용하여 가상 네트워크 멤버십을 구성합니다. 플러그인은 SR-IOV 포드가 생성되는 작업자 노드를 기반으로 관련 패브릭 포트의 구성원 자격을 구성합니다.

필수 구성 요소

CN2 Apstra 구성에서 SR-IOV 디바이스를 구성하기 전에 다음을 설치해야 합니다.

  • Apstra 소프트웨어 4.0 이상

  • SR-IOV 지원 NIC가 있는 작업자 노드가 있는 CN2 클러스터

  • 다음 CN2 컨테이너 네트워크 인터페이스(CNI) 플러그인:

    • Multus 플러그인

    • SR-IOV 네트워크 디바이스 플러그인

    • CN2 Apstra 플러그인

    • CN2 IPAM 플러그인

  • 토폴로지에서 사용하는 스위치 라이선스

    Juniper QFX 스위치에는 고급 기능을 위한 소프트웨어 라이선스가 필요합니다. 패브릭에 필요한 라이선스가 있는지 확인하려면 주니퍼 네트웍스 라이선싱 가이드를 참조하십시오.

    참고:

    설치 워크플로의 4단계에서 설명한 대로 패브릭을 Apstra 청사진에 온보딩하는지 확인합니다.

고려 사항

설치를 시작하기 전에 다음 고려 사항 목록을 읽어보십시오.

  • 이 기능은 다음과 같이 가정합니다.

    • CN2 단일 클러스터 구축

    • SR-IOV 포드 간의 통신

    • SR-IOV 포드 간 VNI 간 및 VNI 간 통신을 위한 기본 사용 사례. 허브 앤 스포크 라우팅과 같은 다른 형태의 라우팅은 지원되지 않습니다.

  • 이 기능은 SR-IOV 작업자 노드가 하나의 리프 디바이스에만 연결된 간단한 스파인 리프 토폴로지로 가정합니다. SR-IOV 작업자 노드가 여러 리프 포트에 연결되어 있는 경우, 이 SR-IOV 작업자 노드가 연결된 모든 리프 디바이스의 모든 리프 포트를 구성합니다.

  • CN2에서 VNI 간 라우팅을 위해 포드에서 경로를 수동으로 구성해야 합니다. 예를 들어, 명령을 ip route add 10.30.30.0/8 via 10.20.20.1 사용하여 다른 가상 네트워크에 연결할 수 있습니다.

  • 중복 IP 및 결합 인터페이스는 사용되지 않습니다.

  • IPv4 주소만 사용 중입니다.

설치 워크플로

CN2 Apstra 플러그인 및 해당 사전 필수 사항을 설치하고 구성하기 위한 이 절차의 단계를 따릅니다.

  1. Apstra 소프트웨어를 설치합니다.

    Apstra 소프트웨어 4.0 이상 설치 및 구성. 주니퍼 Apstra 설치 및 업그레이드 가이드를 참조하십시오.

    기존 데이터센터 네트워크가 있는 경우 Apstra는 이미 패브릭을 관리하고 있습니다. 청사진에 ASN 및 루프백 IP 주소와 같은 필수 리소스 풀을 할당해야 합니다.

  2. CN2 클러스터를 설치합니다.

    Kubernetes 작업자 노드를 포함하는 CN2 클러스터를 설치하고 구성합니다. 지침은 업스트림 Kubernetes용 CN2 설치 가이드 또는 OpenShift 컨테이너 플랫폼용 CN2 설치 가이드 의 설치 섹션을 참조하십시오.

  3. 플러그인을 설치합니다.

    1. Multus 플러그인:

      이 플러그인을 사용하면 여러 네트워크 인터페이스를 포드에 연결할 수 있습니다. 설치 지침 은 Kubernetes용 Multus CNI 또는 OpenShift용 Multus CNI 를 참조하십시오.

    2. SR-IOV 네트워크 디바이스 플러그인:

      이 플러그인은 Kubernetes 호스트에서 SR-IOV 가상 기능에 대한 네트워킹 리소스를 발견하고 보급합니다. 지침은 OpenShift 설명서를 위한 Kubernetes용 SR-IOV 네트워크 디바이스 플러그인 또는 SR-IOV 네트워크 디바이스 플러그인을 참조하십시오.

    3. CN2 Apstra 플러그인:

      이 플러그인은 CN2 구축기의 일부로 설치됩니다. 플러그 인을 설치하려면 CN2 Apstra 플러그인 설치 및 구성 을 참조하십시오.

    4. CN2 IPAM 플러그인:

      이 플러그인은 포드에 IP 주소를 할당합니다. 이 플러그인을 SR-IOV 노드에 설치합니다. 플러그인을 설치하려면 CN2 IPAM 플러그 인 설치를 참조하십시오.

  4. Apstra에서 패브릭 온보딩.

    Apstra 웹 GUI에서 Apstra의 패브릭을 온보딩하십시오. 온보딩 지침은 주니퍼 Apstra 사용자 가이드를 참조하십시오.

    • ASN 및 루프백 IP 주소와 같은 필수 리소스 풀을 청사진에 할당해야 합니다.

    • Apstra Blueprint의 일반 시스템(서버)의 호스트 이름이 해당 CN2 노드의 호스트 이름과 일치하는지 확인합니다. 또한 작업자 노드의 SRIOV 지원 NIC를 패브릭 포트에 연결하는 SR-IOV 링크를 태그해야 합니다. 플러그인을 설치할 때 CN2 Apstra 플러그인 CRD에 동일한 값을 sriov_link_tag 입력합니다. 다음 다이어그램은 일반 시스템의 호스트 이름이 CN2 작업자 노드의 해당 호스트 이름과 일치하도록 편집된 Apstra 청사진의 토폴로지 예를 보여줍니다. 다이어그램은 앞서 언급한 SR-IOV 링크에 대해 구성된 SRIOV 태그도 보여줍니다.

  5. 설치를 확인합니다.

    지침 은 설치 확인을 참조하십시오.

CN2 Apstra 플러그인 설치 및 구성

이 섹션에서는 CN2 Apstra 플러그인을 설치하고 구성하는 방법을 설명합니다.

CN2 Apstra 플러그인은 구축기의 일부로 설치됩니다. CN2 Apstra 플러그인은 가상 네트워크를 패브릭으로 확장하고, CN2 Kubernetes 이벤트(예: NAD 생성)를 수신하고, Apstra SDK를 통해 언더레이의 패브릭을 구성합니다.

설치에 따라 다음 파일을 사용하여 플러그인을 설치하고 구성합니다.

  • Kubernetes의 경우, 파일을 사용합니다 single_cluster_deployer_example.yaml .

  • OpenShift의 경우 디렉터리에 있는 모든 파일을 디렉터리 구조의 ocp/plugins 한 수준으로 복사합니다.

CN2 Apstra 플러그인 설치 및 구성:

  1. 파일에서 및 contrail-apstra-pluginapstra-plugin-secret(를) 분리합니다single_cluster_deployer_example.yaml.

  2. 해당 구축자 파일의 apstra-plugin-secret 섹션에 자격 증명(사용자 이름 및 암호)을 입력합니다. 자격 증명이 기본64 인코딩되었는지 확인합니다.

    예를 들어:

  3. 다음 예에 표시된 대로 에 contrail-apstra-plugin 대한 blueprint name, server_ip, sriov_link tag 매개 변수를 입력합니다. 에 대한 sriov_link tag 매개 변수가 Apstra 소프트웨어에서 지정한 매개 변수와 동일한지 확인합니다.

    이 예는 이미지를 가져오는 contrail-apstra-plugin 위치의 이미지 URL도 보여줍니다. 필요한 경우 이미지 URL을 편집할 수 있습니다. 예를 들어, 이미지R22.4-5release_number 값을 으로 변경할 수 있습니다.

    각 필드의 의미를 이해하는 데 도움이 하려면 명령을 실행합니다 kubectl explain apstraplugin.spec .

    참고:

    다음 예는 정보 제공 목적으로만 해당됩니다. CN2 Apstra 플러그인을 구축한 후에만 이 명령을 실행할 수 있습니다.

위의 단계에서 CN2 Apstra 플러그인을 설치하기 위해 구축기에 필요한 변경을 수행했습니다. 이제 업스트림 Kubernetes용 CN2 설치 가이드 또는 OpenShift 컨테이너 플랫폼을 위한 CN2 설치 가이드의 지침을 따라 CN2 설치를 진행할 수 있습니다.

참고:

CN2 설치를 완료한 후에도 위의 단계에서 언급했듯이 구축자 YAML의 CN2 Apstra 플러그인 매개 변수를 편집한 다음 CN2를 재설치할 수 있습니다.

설치 확인

다음 kubectl 명령을 실행하여 설치가 실행 중인지 확인합니다. 예를 들어:

CN2 IPAM 플러그인 설치

이 절차를 따라 Kubernetes 및 OpenShift 구축 모두에 대해 CN2 IPAM 플러그인을 설치합니다. 이 절차는 CN2가 Kubernetes 클러스터에 이미 설치되어 있다고 가정합니다. 이 절차에서는 단일 클러스터 구축을 보여줍니다.

CN2 IPAM 플러그인 설치 및 구성:

  1. kubectl get nodes 명령을 실행하여 사용 가능한 노드 목록을 확인합니다.
  2. SR-IOV 지원 NIC를 사용하여 각 작업자 노드에 대한 레이블 sriov:"true" 을 추가합니다. 예를 들어:
  3. sriovLabelSelector CRD에 을(를) contrail-vrouters-nodes 추가합니다.
    CRD에서 사양 필드에서 다음 정보를 추가합니다.
  4. 플러그인 설치를 확인합니다.

    vRouter 포드가 마스터 노드에서 다시 시작될 때까지 기다립니다. 다음 예와 cn2-ipam같이 및 sriov 바이니가 설치되었는지 확인합니다.

    참고:

    이진 파일의 기본 위치는 Kubernetes 또는 OpenShift 사용 여부에 따라 다릅니다.

    • Kubernetes의 경우 바이니어스가 /opt/cni/bin/ 디렉터리에 있습니다.

    • OpenShift의 경우 바이니어스가 /var/lib/cni/bin/ 디렉터리에 있습니다.

SR-IOV 사용 사례

이 섹션에서는 VNI 내 및 VNI 간 토폴로지에 대한 SR-IOV 사용 사례의 예를 제공합니다.

VNI 내: 동일한 가상 네트워크에 속하는 포드

이 VNI 내 사용 사례에서 포드는 동일한 가상 네트워크에 연결됩니다. 기본적으로 동일한 가상 네트워크에 연결된 포드는 다음 여부에 관계없이 서로 통신할 수 있습니다.

  • 포드는 동일한 SR-IOV 작업자 노드 또는 다른 SR-IOV 작업자 노드에서 생성됩니다.

    또는

  • SR-IOV 작업자 노드는 동일한 리프 디바이스 또는 다른 리프 디바이스에 연결됩니다.

그림 2 는 VNI 내부 토폴로지의 예를 보여줍니다. 이 스파인 리프 토폴로지에는 두 개의 SR-IOV 작업자 노드가 표시됩니다. 각 노드에는 SR-IOV가 활성화된 물리적 NIC가 있습니다. 이러한 물리적 NIC(ens801f2 및 ens801f3)는 가상 기능으로 분리되고 직접 입력/출력(I/O)을 위해 포드에 연결할 수 있습니다. 패킷이 이러한 가상 기능을 사용할 때 패킷은 올바른 VLAN으로 태그 처리됩니다. 이 예에서 각 포드는 동일한 가상 네트워크에 속합니다. 이 사용 사례에서는 패킷이 vRouter를 통과하지 않습니다. 대신, 패킷은 Apstra에서 프로비저닝하는 패브릭 언더레이로 직접 이동합니다.

그림 2: 예: VNI 내 토폴로지
Intra-VNI: Pods That Belong to the Same Virtual Network

VNI 간 라우팅: 서로 다른 가상 네트워크에 속하는 포드

그림 3. 은(는) VNI 간 토폴로지의 예를 보여줍니다. 이 토폴로지에서 토폴로지의 포드는 두 개의 서로 다른 가상 네트워크에 속합니다. 이러한 네트워크 간의 라우팅을 활성화하려면 CN2에서 가상 네트워크 라우터(VNR)를 생성해야 합니다. 지침은 VNI 간 Pod 통신 구성을 참조하십시오.

참고:

VNI 간 토폴로지에서 사용할 지원되는 Juniper 디바이스 목록은 EVPN-VXLAN 토폴로지의 레이어 3 연결을 참조하십시오. 또한 QFX 디바이스가 버전 20.2R2.11 이상에서 Junos OS 실행되고 있는지 확인합니다.

그림 3: 예: VNI 간 토폴로지
Inter-VNI Routing: Pods That Belong to Different Virtual Networks

VNI 내 Pod 통신 구성

이 절차를 따라 동일한 가상 네트워크에 있는 포드 간의 통신을 구성합니다.

VNI 내 포드 통신 구성 방법:

  1. (NAD) 개체를 NetworkAttachmentDefinition 생성하여 가상 네트워크에 포드를 연결합니다.
    다음 예는 NAD를 NetworkAttachmentDefinition.yaml 생성하는 데 사용하는 파일을 보여줍니다.
    이 예에서는 이 레이블 juniper.net/plugin: apstra 을 사용하여 CN2 가상 네트워크를 Apstra 플러그인을 사용하여 패브릭으로 확장합니다. OpenShift 클러스터에 동일한 NAD 정의를 사용할 수 있습니다.
    이 개체를 만들 때 CN2 Apstra 플러그인은 NAD를 수신하고 Apstra를 통해 패브릭으로 확장합니다 VirtualNetwork .
  2. kubectl apply -f sriov_net20_nad.yaml 명령을 실행하여 NAD를 생성합니다.
  3. NAD가 생성되었는지 확인하기 위해 다음 명령을 실행합니다.
    NAD가 생성되면 CN2 Apstra 플러그인은 변경을 수신하고 Apstra SDK를 통해 패브릭을 프로비저닝합니다.
  4. 다음으로 파일을 생성합니다Pod.yaml. 예를 들어:
    주니퍼는 1단계에서 생성한 NAD( sriov-net20)를 참조하고 있습니다. 가상 기능에 대한 리소스 이름() intel.com/intel_sriov_netdevice외에.
  5. 마지막으로 명령을 실행 kubectl apply -f pod.yaml 하여 포드를 생성합니다.
    포드를 생성할 때 CN2 Apstra 플러그인은 pod 생성 이벤트를 수신하고 패브릭을 프로비저닝하여 관련 패브릭 포트를 에 할당합니다 VirtualNetwork.
이제 동일한 가상 네트워크에서 포드 간의 통신을 구성했습니다.

VNI 간 Pod 통신 구성

이 절차를 따라 다른 가상 네트워크에 속하는 포드 간의 통신을 구성합니다.

VNI 간 포드 통신 구성 방법:

  1. 가상 네트워크에 포드를 연결하는 NAD 개체를 생성합니다. OpenShift 클러스터에 동일한 NAD 정의를 사용할 수 있습니다.
  2. kubectl apply -f sriov_net30_nad.yaml 명령을 실행하여 NAD를 생성합니다.
  3. NAD가 생성되었는지 확인하기 위해 다음 명령을 실행합니다.
    NAD를 생성할 때 CN2 Apstra 플러그인은 NAD 이벤트를 수신하고 Apstra를 통해 패브릭으로 확장합니다 VirtualNetwork . 동일한 패턴을 따라 필요에 따라 추가 NAD를 생성할 수 있습니다.
  4. Pod.yaml 다른 가상 네트워크에 포드를 연결하는 파일을 생성합니다. 예를 들어:

    1단계에서 생성된 NAD(sriov-net30)를 참조하고 있습니다. 또한 가상 기능에 대한 리소스 이름(intel.com/intel_sriov_netdevice)이 추가됩니다.

  5. kubectl apply -f pod.yaml 명령을 실행하여 포드를 생성합니다.
    포드를 생성할 때 CN2 Apstra 플러그인은 pod 생성 이벤트를 수신하고 패브릭을 프로비저닝하여 관련 패브릭 포트를 에 할당합니다 VirtualNetwork.
  6. 공통 레이블을 VirtualNetworkRouter.yaml 사용하여 다른 가상 네트워크를 라우팅할 파일을 생성합니다. 이 예에서 사용 중인 공통 레이블은 다음과 web같습니다.
  7. 마지막으로 VNI 간 라우팅을 위해 각 포드에서 게이트웨이를 수동으로 구성합니다.
    예를 들어, Ubuntu에서 명령을 ip route add 10.20.20.0/24 via 10.30.30.1 사용하여 게이트웨이를 구성할 수 있습니다.
이제 서로 다른 가상 네트워크에 속하는 포드 간의 통신을 구성했습니다.