6.4. 모든 멀티캐스트 모드에 대하여


특히 루트가 없는 애플리케이션의 경우 모든 멀티캐스트 모드를 활성화하는 것이 중요합니다. 이 모드를 활성화하지 않으면 포드의 보안 컨텍스트 제약 조건(SCC)에 NET_ADMIN 기능을 부여해야 합니다. NET_ADMIN 기능을 통해 포드에 특정 요구 사항을 넘어서는 변경 권한을 부여할 경우 잠재적으로 보안 취약점이 노출될 수 있습니다.

튜닝 CNI 플러그인은 모든 멀티캐스트 모드를 포함한 여러 인터페이스 속성 변경을 지원합니다. 이 모드를 활성화하면 SR-IOV 네트워크 장치에 구성된 가상 기능(VF)에서 실행되는 애플리케이션이 동일하거나 다른 물리적 기능에 연결된 다른 VF의 애플리케이션에서 멀티캐스트 트래픽을 수신할 수 있습니다.

6.4.1. SR-IOV 네트워크에서 모든 멀티캐스트 모드 활성화

SR-IOV 인터페이스에서 모든 멀티캐스트 모드를 활성화하려면 다음을 수행합니다.

  • SriovNetwork 리소스의 metaPlugins 매개변수에 튜닝 구성 추가
  • 튜닝 구성에서 allmulti 필드를 true 로 설정

    참고

    신뢰가 활성화된 상태에서 가상 기능(VF)을 생성했는지 확인하세요.

SR-IOV Network Operator는 추가 네트워크 정의를 관리합니다. 생성할 추가 SR-IOV 네트워크를 지정하면 SR-IOV Network Operator가 NetworkAttachmentDefinition CR(사용자 정의 리소스)을 자동으로 생성합니다.

참고

SR-IOV Network Operator가 관리하는 NetworkAttachmentDefinition 사용자 정의 리소스를 편집하지 마십시오. 편집하면 추가 네트워크의 네트워크 트래픽이 중단될 수 있습니다.

이 지침에 따라 SR-IOV 네트워크에서 모든 멀티캐스트 모드를 활성화하세요.

사전 요구 사항

  • OpenShift Container Platform CLI(oc)를 설치했습니다.
  • 클러스터 관리자 권한이 있는 사용자로 OpenShift Container Platform 클러스터에 로그인했습니다.
  • SR-IOV Network Operator가 설치되어 있습니다.
  • 적절한 SriovNetworkNodePolicy 객체를 구성했습니다.

프로세스

  1. Mellanox ConnectX-5 장치에 대한 SriovNetworkNodePolicy 객체를 정의하는 다음 설정을 사용하여 YAML 파일을 만듭니다. YAML 파일을 sriovnetpolicy-mlx.yaml 로 저장합니다.

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: sriovnetpolicy-mlx
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice
      nicSelector:
        deviceID: "1017"
        pfNames:
          - ens8f0np0#0-9
        rootDevices:
          - 0000:d8:00.0
        vendor: "15b3"
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: "true"
      numVfs: 10
      priority: 99
      resourceName: resourcemlx
    Copy to Clipboard Toggle word wrap
  2. 선택 사항: SR-IOV 지원 클러스터 노드에 아직 레이블이 지정되지 않은 경우 SriovNetworkNodePolicy.Spec.NodeSelector 레이블을 추가합니다. 노드에 레이블을 지정하는 방법에 대한 자세한 내용은 "노드의 레이블을 업데이트하는 방법 이해"를 참조하세요.
  3. 다음 명령을 실행하여 SriovNetworkNodePolicy 오브젝트를 생성합니다.

    $ oc create -f sriovnetpolicy-mlx.yaml
    Copy to Clipboard Toggle word wrap

    구성 업데이트를 적용한 후 sriov-network-operator 네임스페이스의 모든 포드가 자동으로 실행 상태로 전환됩니다.

  4. 다음 명령을 실행하여 enable-allmulti-test 네임스페이스를 만듭니다.

    $ oc create namespace enable-allmulti-test
    Copy to Clipboard Toggle word wrap
  5. 다음 예제 CR YAML과 같이 추가 SR-IOV 네트워크 연결을 위한 SriovNetwork 사용자 지정 리소스(CR)를 만들고 metaPlugins 구성을 삽입한 다음, 파일을 sriov-enable-all-multicast.yaml 로 저장합니다.

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetwork
    metadata:
      name: enableallmulti 
    1
    
      namespace: openshift-sriov-network-operator 
    2
    
    spec:
      resourceName: enableallmulti 
    3
    
      networkNamespace: enable-allmulti-test 
    4
    
      ipam: '{ "type": "static" }' 
    5
    
      capabilities: '{ "mac": true, "ips": true }' 
    6
    
      trust: "on" 
    7
    
      metaPlugins : | 
    8
    
        {
          "type": "tuning",
          "capabilities":{
            "mac":true
          },
          "allmulti": true
          }
        }
    Copy to Clipboard Toggle word wrap
    1
    오브젝트의 이름을 지정합니다. SR-IOV 네트워크 운영자는 동일한 이름으로 NetworkAttachmentDefinition 객체를 생성합니다.
    2
    SR-IOV Network Operator가 설치된 네임스페이스를 지정합니다.
    3
    이 추가 네트워크에 대한 SR-IOV 하드웨어를 정의하는 SriovNetworkNodePolicy 개체의 spec.resourceName 매개변수에 대한 값을 지정합니다.
    4
    SriovNetwork 개체에 대한 대상 네임스페이스를 지정합니다. 대상 네임스페이스의 포드만 추가 네트워크에 연결할 수 있습니다.
    5
    IPAM CNI 플러그인에 대한 구성 객체를 YAML 블록 스칼라로 지정합니다. 이 플러그인은 첨부 파일 정의에 대한 IP 주소 할당을 관리합니다.
    6
    선택 사항: 추가 네트워크에 대한 기능을 설정합니다. "{"ips": true}" 를 지정하여 IP 주소 지원을 활성화하거나 "{"mac":true}"를 지정하여 MAC 주소 지원을 활성화할 수 있습니다.
    7
    가상 함수의 신뢰 모드를 지정합니다. 이 설정은 "켜짐"으로 설정되어야 합니다.
    8
    metaPlugins 매개변수를 사용하여 장치에 더 많은 기능을 추가합니다. 이 사용 사례에서는 type 필드를 tuning 으로 설정하고 allmulti 필드를 추가하고 true 로 설정합니다.
  6. 다음 명령을 실행하여 SriovNetwork 리소스를 만듭니다.

    $ oc create -f sriov-enable-all-multicast.yaml
    Copy to Clipboard Toggle word wrap

NetworkAttachmentDefinition CR 확인

  • 다음 명령을 실행하여 SR-IOV 네트워크 운영자가 NetworkAttachmentDefinition CR을 생성했는지 확인하세요.

    $ oc get network-attachment-definitions -n <namespace> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <네임스페이스>를 SriovNetwork 개체에서 지정한 networkNamespace 값으로 바꾸세요. 이 예에서는 enable-allmulti-test 입니다. 예상되는 출력에는 NAD CR의 이름과 생성 시간(분)이 표시됩니다.
    참고

    SR-IOV Network Operator가 CR을 생성하기 전에 지연이 발생할 수 있습니다.

    1. 다음 명령을 실행하여 SR-IOV 네트워크 리소스에 대한 정보를 표시합니다.

      $ oc get sriovnetwork -n openshift-sriov-network-operator
      Copy to Clipboard Toggle word wrap

추가 SR-IOV 네트워크 연결 확인

튜닝 CNI가 올바르게 구성되었고 추가 SR-IOV 네트워크 연결이 연결되었는지 확인하려면 다음 단계를 따르세요.

  1. Pod CR을 생성합니다. 다음 샘플 YAML을 examplepod.yaml 이라는 이름의 파일에 저장합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: samplepod
      namespace: enable-allmulti-test
      annotations:
        k8s.v1.cni.cncf.io/networks: |-
          [
            {
              "name": "enableallmulti",  
    1
    
              "mac": "0a:56:0a:83:04:0c", 
    2
    
              "ips": ["10.100.100.200/24"] 
    3
    
           }
          ]
    spec:
      containers:
      - name: podexample
        image: centos
        command: ["/bin/bash", "-c", "sleep INF"]
        securityContext:
          runAsUser: 2000
          runAsGroup: 3000
          allowPrivilegeEscalation: false
          capabilities:
            drop: ["ALL"]
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
    Copy to Clipboard Toggle word wrap
    1
    SR-IOV 네트워크 연결 정의 CR의 이름을 지정합니다.
    2
    선택 사항: SR-IOV 네트워크 연결 정의 CR에 정의된 리소스 유형에서 할당된 SR-IOV 장치의 MAC 주소를 지정합니다. 이 기능을 사용하려면 SriovNetwork 개체에서 {"mac": true} 도 지정해야 합니다.
    3
    선택 사항: SR-IOV 네트워크 연결 정의 CR에 정의된 리소스 유형에서 할당된 SR-IOV 장치의 IP 주소를 지정합니다. IPv4 및 IPv6 주소가 모두 지원됩니다. 이 기능을 사용하려면 SriovNetwork 오브젝트에 { "ips": true }도 지정해야 합니다.
  2. 다음 명령을 실행하여 Pod CR을 만듭니다.

    $ oc apply -f examplepod.yaml
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 Pod가 생성되었는지 확인하세요.

    $ oc get pod -n enable-allmulti-test
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME       READY   STATUS    RESTARTS   AGE
    samplepod  1/1     Running   0          47s
    Copy to Clipboard Toggle word wrap

  4. 다음 명령을 실행하여 Pod에 로그인합니다.

    $ oc rsh -n enable-allmulti-test samplepod
    Copy to Clipboard Toggle word wrap
  5. 다음 명령을 실행하여 Pod와 연결된 모든 인터페이스를 나열합니다.

    sh-4.4# ip link
    Copy to Clipboard Toggle word wrap

    출력 예

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8901 qdisc noqueue state UP mode DEFAULT group default
        link/ether 0a:58:0a:83:00:10 brd ff:ff:ff:ff:ff:ff link-netnsid 0 
    1
    
    3: net1@if24: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
        link/ether ee:9b:66:a4:ec:1d brd ff:ff:ff:ff:ff:ff link-netnsid 0 
    2
    Copy to Clipboard Toggle word wrap

    1
    eth0@if22 는 기본 인터페이스입니다
    2
    net1@if24는 모든 멀티캐스트 모드( ALLMULTI 플래그)를 지원하는 네트워크 연결 정의로 구성된 보조 인터페이스입니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat