17.3.5. 컨테이너 네트워크 네임스페이스에서 마스터 인터페이스 구성 정보


컨테이너 네임스페이스에 있는 마스터 인터페이스를 기반으로 하는 MAC-VLAN, IP-VLAN 또는 VLAN 하위 인터페이스를 생성할 수 있습니다. 별도의 네트워크 연결 정의 CRD에서 Pod 네트워크 구성의 일부로 마스터 인터페이스를 생성할 수도 있습니다.

컨테이너 네임스페이스 마스터 인터페이스를 사용하려면 NetworkAttachmentDefinition CRD의 하위 인터페이스에 존재하는 linkInContainer 매개변수에 대해 true 를 지정해야 합니다.

17.3.5.1. SR-IOV VF에서 여러 VLAN 생성

SR-IOV VF를 기반으로 여러 VLAN을 생성할 수 있습니다. 이 구성의 경우 SR-IOV 네트워크를 생성한 다음 VLAN 인터페이스의 네트워크 연결을 정의합니다.

다음 다이어그램에서는 SR-IOV VF에서 여러 VLAN을 생성하는 설정 프로세스를 보여줍니다.

VLAN 생성

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • SR-IOV Network Operator가 설치되어 있습니다.

프로세스

  1. 다음 명령을 사용하여 Pod를 배포하려는 전용 컨테이너 네임스페이스를 생성합니다.

    $ oc new-project test-namespace
  2. SR-IOV 노드 정책을 생성합니다.

    1. SriovNetworkNodePolicy 오브젝트를 생성한 다음 YAML을 sriov-node-network-policy.yaml 파일에 저장합니다.

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetworkNodePolicy
      metadata:
       name: sriovnic
       namespace: openshift-sriov-network-operator
      spec:
       deviceType: netdevice
       isRdma: false
       needVhostNet: true
       nicSelector:
         vendor: "15b3"
         deviceID: "101b"
         rootDevices: ["00:05.0"]
       numVfs: 10
       priority: 99
       resourceName: sriovnic
       nodeSelector:
          feature.node.kubernetes.io/network-sriov.capable: "true"

      다음과 같습니다.

      vendor
      SR-IOV 네트워크 장치의 벤더 16진수 코드입니다. 값 15b3 은 Mellanox NIC와 연결됩니다.
      deviceID

      SR-IOV 네트워크 장치의 장치 16진수 코드입니다.

      참고

      deviceType: netdevice 설정을 사용하는 SR-IOV 네트워크 노드 정책 구성 예제는 Mellanox Network Interface Cards(NIC)에 맞게 조정됩니다.

    2. 다음 명령을 실행하여 YAML 구성을 적용합니다.

      $ oc apply -f sriov-node-network-policy.yaml
      참고

      노드 재부팅 작업으로 인해 YAML 구성을 적용하는 데 시간이 걸릴 수 있습니다.

  3. SR-IOV 네트워크를 생성합니다.

    1. 다음 예제 CR에 설명된 대로 추가 보조 SR-IOV 네트워크 연결에 대한 SriovNetwork CR(사용자 정의 리소스)을 생성합니다. YAML을 sriov-network-attachment.yaml 파일로 저장합니다.

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetwork
      metadata:
       name: sriov-network
       namespace: openshift-sriov-network-operator
      spec:
       networkNamespace: test-namespace
       resourceName: sriovnic
       spoofChk: "off"
       trust: "on"
    2. 다음 명령을 실행하여 YAML을 적용합니다.

      $ oc apply -f sriov-network-attachment.yaml
  4. VLAN 보조 네트워크를 만듭니다.

    1. 다음 YAML 예제를 사용하여 vlan100-additional-network-configuration.yaml 이라는 파일을 만듭니다.

      apiVersion: k8s.cni.cncf.io/v1
      kind: NetworkAttachmentDefinition
      metadata:
        name: vlan-100
        namespace: test-namespace
      spec:
        config: |
          {
            "cniVersion": "0.4.0",
            "name": "vlan-100",
            "plugins": [
              {
                "type": "vlan",
                "master": "ext0",
                "mtu": 1500,
                "vlanId": 100,
                "linkInContainer": true,
                "ipam": {"type": "whereabouts", "ipRanges": [{"range": "1.1.1.0/24"}]}
              }
            ]
          }

      다음과 같습니다.

      master
      VLAN 구성은 마스터 이름을 지정해야 합니다. Pod의 네트워크 주석에 이름을 지정할 수 있습니다.
      linkInContainer
      linkInContainer 매개변수를 지정해야 합니다.
    2. 다음 명령을 실행하여 YAML 파일을 적용합니다.

      $ oc apply -f vlan100-additional-network-configuration.yaml
  5. 이전 지정된 네트워크를 사용하여 포드 정의를 생성합니다.

    1. 다음 YAML 구성 예제를 사용하여 pod-a.yaml 파일이라는 파일을 생성합니다.

      참고

      매니페스트 예제에는 다음 리소스가 포함됩니다.

      • 보안 레이블이 있는 네임스페이스
      • 적절한 네트워크 주석이 있는 Pod 정의
      apiVersion: v1
      kind: Namespace
      metadata:
        name: test-namespace
        labels:
          pod-security.kubernetes.io/enforce: privileged
          pod-security.kubernetes.io/audit: privileged
          pod-security.kubernetes.io/warn: privileged
          security.openshift.io/scc.podSecurityLabelSync: "false"
      ---
      apiVersion: v1
      kind: Pod
      metadata:
        name: nginx-pod
        namespace: test-namespace
        annotations:
          k8s.v1.cni.cncf.io/networks: '[
            {
              "name": "sriov-network",
              "namespace": "test-namespace",
              "interface": "ext0"
            },
            {
              "name": "vlan-100",
              "namespace": "test-namespace",
              "interface": "ext0.100"
            }
          ]'
      spec:
        securityContext:
          runAsNonRoot: true
        containers:
          - name: nginx-container
            image: nginxinc/nginx-unprivileged:latest
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop: ["ALL"]
            ports:
              - containerPort: 80
            seccompProfile:
              type: "RuntimeDefault"

      다음과 같습니다.

      interface
      VLAN 인터페이스의 마스터 인터페이스로 사용할 이름입니다.
    2. 다음 명령을 실행하여 YAML 파일을 적용합니다.

      $ oc apply -f pod-a.yaml
  6. 다음 명령을 실행하여 test-namespace 내에서 nginx-pod 에 대한 자세한 정보를 가져옵니다.

    $ oc describe pods nginx-pod -n test-namespace
    Name:         nginx-pod
    Namespace:    test-namespace
    Priority:     0
    Node:         worker-1/10.46.186.105
    Start Time:   Mon, 14 Aug 2023 16:23:13 -0400
    Labels:       <none>
    Annotations:  k8s.ovn.org/pod-networks:
                    {"default":{"ip_addresses":["10.131.0.26/23"],"mac_address":"0a:58:0a:83:00:1a","gateway_ips":["10.131.0.1"],"routes":[{"dest":"10.128.0.0...
                  k8s.v1.cni.cncf.io/network-status:
                    [{
                        "name": "ovn-kubernetes",
                        "interface": "eth0",
                        "ips": [
                            "10.131.0.26"
                        ],
                        "mac": "0a:58:0a:83:00:1a",
                        "default": true,
                        "dns": {}
                    },{
                        "name": "test-namespace/sriov-network",
                        "interface": "ext0",
                        "mac": "6e:a7:5e:3f:49:1b",
                        "dns": {},
                        "device-info": {
                            "type": "pci",
                            "version": "1.0.0",
                            "pci": {
                                "pci-address": "0000:d8:00.2"
                            }
                        }
                    },{
                        "name": "test-namespace/vlan-100",
                        "interface": "ext0.100",
                        "ips": [
                            "1.1.1.1"
                        ],
                        "mac": "6e:a7:5e:3f:49:1b",
                        "dns": {}
                    }]
                  k8s.v1.cni.cncf.io/networks:
                    [ { "name": "sriov-network", "namespace": "test-namespace", "interface": "ext0" }, { "name": "vlan-100", "namespace": "test-namespace", "i...
                  openshift.io/scc: privileged
    Status:       Running
    IP:           10.131.0.26
    IPs:
      IP:  10.131.0.26
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동