5장. 네임스페이스가 지정된 SR-IOV 리소스 구성


네임스페이스가 지정된 SriovNetwork 리소스를 통해 애플리케이션 소유자는 클러스터 관리자가 공유 Operator 네임스페이스에서 이를 수행하는 대신, 네임스페이스 내에서 직접 자체 SriovNetwork 리소스를 생성하고 관리할 수 있습니다. 이 방법은 권한을 단순화하고 보안을 개선하며 애플리케이션을 보다 효과적으로 분리합니다.

5.1. 네임스페이스가 지정된 SriovNetwork 리소스 도입

SR-IOV 네트워크는 애플리케이션 네임스페이스 내에서 직접 생성하고 관리할 수 있습니다. 이 기능을 사용하면 애플리케이션 소유자가 네트워크 구성을 세밀하게 제어하여 워크플로를 단순화할 수 있습니다.

이 접근 방식은 사용자 경험을 향상시키는 몇 가지 주요 이점을 제공합니다.

  • 향상된 자동화 및 제어: 애플리케이션 소유자는 네트워크 구성을 직접 제어할 수 있으므로 클러스터 관리자가 대신 SriovNetwork 오브젝트를 생성할 필요가 없습니다.
  • 보안 강화: 사용자가 자체 네임스페이스 내에서 리소스를 관리할 수 있도록 허용하면 보안이 향상되고 애플리케이션을 보다 효과적으로 분리할 수 있습니다. 또한 다른 애플리케이션의 NetworkAttachmentDefinition 오브젝트에 대한 의도하지 않은 잘못된 구성을 방지하는 데 도움이 됩니다.
  • 간소화된 권한: 자체 네임스페이스에서 SriovNetwork 리소스를 직접 관리하면 사용자 권한이 간소화됩니다. 이렇게 하면 워크플로우가 간소화되고 개발자의 운영 오버헤드가 줄어듭니다.

5.1.1. 애플리케이션 네임스페이스에서 SriovNetwork 구성

SriovNetwork CR(사용자 정의 리소스)이 애플리케이션 네임스페이스에 배포된 경우 spec.networkNamespace 필드를 정의하거나 채우지 마십시오. 이 시나리오에서는 NetworkAttachmentDefinition이 SriovNetwork CR과 동일한 네임스페이스에 생성됩니다.

SR-IOV Network Operator 웹 후크는 spec.networkNamespace 필드가 정의된 경우 애플리케이션 네임스페이스에서 SriovNetwork 리소스 생성을 거부합니다.

애플리케이션 네임스페이스에 SriovNetwork 리소스를 생성하고 추가 네트워크에 Pod를 연결하려면 다음 절차를 따르십시오.

사전 요구 사항

애플리케이션 소유자가 네임스페이스가 지정된 SriovNetwork 리소스를 구성하려면 클러스터 관리자가 다음 단계를 완료해야 합니다.

  • SR-IOV Network Operator는 openshift-sriov-network-operator 네임스페이스에 설치됩니다.
  • SR-IOV 하드웨어가 있는 노드에는 노드를 식별하기 위해 Operator에 레이블이 지정됩니다.

애플리케이션 소유자로서 애플리케이션 네임스페이스에 대한 관리자 권한이 있어야 합니다.

프로세스

  1. SR-IOV 네트워크 노드 정책을 생성하여 노드의 SR-IOV 네트워크 장치 구성을 지정합니다. SriovNetworkNodePolicy 오브젝트는 openshift-sriov-network-operator 네임스페이스에 생성되어 노드의 SR-IOV 네트워크 장치 구성을 정의합니다. Intel DPK 구성에 대한 예는 다음과 같습니다.

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: intel-dpdk-node-policy
      namespace: openshift-sriov-network-operator
    spec:
      resourceName: intelnics
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: "true"
      priority: 10
      numVfs: 4
      nicSelector:
        vendor: "8086"
        deviceID: "158b"
        pfNames: [""]
      deviceType: netdevice
    Copy to Clipboard Toggle word wrap
  2. 애플리케이션 네임스페이스를 생성합니다. 예를 들어 다음 명령을 실행하여 sriov-app 이라는 네임스페이스를 생성합니다.

    $ cat <<EOF | oc create -f -
    apiVersion: v1
    kind: Namespace
    metadata:
        name: sriov-app
    EOF
    Copy to Clipboard Toggle word wrap
  3. YAML 파일(예: sriovnetwork.yaml )을 생성하여 애플리케이션 네임스페이스에서 SriovNetwork 오브젝트를 정의합니다.

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetwork
    metadata:
      name: test-network
      namespace: sriov-app
    spec:
      resourceName: intelnics
      ipam:
        type: host-local
        subnet: "10.0.0.0/24"
        routes:
          - dst: "0.0.0.0/0"
            gw: "10.0.0.1"
      vlan: 10
    Copy to Clipboard Toggle word wrap
    • namespace: 값은 애플리케이션 네임스페이스의 이름과 일치해야 합니다(예: sriov-app ).
    • resourceName: 이 값은 클러스터 관리자가 생성한 SriovNetworkNodePolicy 에 정의된 spec.resourceName 과 일치해야 합니다. 이 예에서는 intelnics 입니다.
  4. YAML 파일을 적용하여 애플리케이션 네임스페이스에서 SriovNetwork 오브젝트를 생성합니다.

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

    애플리케이션 소유자가 SriovNetwork 리소스를 생성한 후 새로 정의된 네트워크를 사용하는 Pod를 생성할 수 있습니다. Pod의 YAML 매니페스트에 특정 주석을 추가하여 추가 네트워크에 Pod를 연결합니다.

  5. YAML 파일(예: test-pod.yaml )을 생성하여 새 네트워크 연결을 사용하는 Pod를 정의합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod
      namespace: sriov-app
      annotations:
        k8s.v1.cni.cncf.io/networks: test-network
    spec:
      containers:
      - name: test-pod-container
        image: centos/tools
        command: ["/bin/bash", "-c", "sleep 3600"]
    Copy to Clipboard Toggle word wrap
    • namespace: Pod가 생성된 네임스페이스입니다. SriovNetwork 오브젝트가 생성된 네임스페이스와 동일해야 합니다.
    • 주석:k8s.v1.cni.cncf.io/networks 는 Pod가 연결되는 추가 네트워크를 지정합니다. 값은 SriovNetwork 오브젝트의 metadata.name 과 일치해야 합니다.
  6. 다음 명령을 실행하여 애플리케이션 네임스페이스에 Pod를 생성하도록 YAML 파일을 적용합니다.

    $ oc create -f test-pod.yaml
    Copy to Clipboard Toggle word wrap

검증

  1. 다음 명령을 실행하여 NetworkAttachmentDefinition이 동일한 네임스페이스에 생성되었는지 확인합니다.

    $ oc get net-attach-def -n sriov-app
    Copy to Clipboard Toggle word wrap

    여기서 sriov-appSriovNetwork 오브젝트가 생성된 애플리케이션 네임스페이스입니다.

    출력 예

    NAME           AGE
    test-network   2m
    Copy to Clipboard Toggle word wrap

  2. 다음 명령으로 Pod를 설명하여 포드가 실행 중인지 확인하고 네트워크 상태를 가져옵니다.

    $ oc describe pod test-pod -n sriov-app
    Copy to Clipboard Toggle word wrap

    여기서 sriov-app 은 Pod가 생성된 애플리케이션 네임스페이스입니다.

    출력에서 k8s.v1.cni.cncf.io/network-status 주석을 찾습니다. 여기에는 네트워크의 이름과 해당 인터페이스의 pod에 할당된 IP가 표시됩니다.

  3. 다음 명령을 실행하여 Pod에 추가 네트워크 인터페이스가 있는지 확인합니다.

    $ oc exec -it test-pod -n sriov-app -- ip a
    Copy to Clipboard Toggle word wrap

    기본 eth0 인터페이스 외에도 보조 네트워크 인터페이스(예: net1 또는 eth1 )를 찾습니다. net1 인터페이스에는 SriovNetwork 오브젝트에 정의된 서브넷의 IP 주소가 있어야 합니다(예: 10.0.0.0/24 ). 이렇게 하면 포드에서 새 네트워크 연결 정의를 사용하고 있는지 확인합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat