1.8. 다양한 인터페이스에 대한 예제 정책 구성


다양한 NodeNetworkConfigurationPolicy (NNCP) 매니페스트 구성 예를 읽기 전에 클러스터가 최상의 성능 조건에서 실행될 수 있도록 노드에 정책을 적용할 때 다음 요소를 고려하세요.

  • 두 개 이상의 노드에 정책을 적용해야 하는 경우 각 대상 노드에 대해 NodeNetworkConfigurationPolicy 매니페스트를 만듭니다. Kubernetes NMState Operator는 정의된 NNCP가 있는 각 노드에 정책을 지정되지 않은 순서로 적용합니다. 이 접근 방식으로 정책 범위를 지정하면 정책 적용 시간은 줄어들지만 클러스터 구성에 오류가 있는 경우 클러스터 전체가 중단될 위험이 있습니다. 이러한 유형의 오류를 방지하려면 먼저 일부 노드에 NNCP를 적용하고 해당 노드에 대해 NNCP가 올바르게 구성되었는지 확인한 다음 나머지 노드에 정책을 적용합니다.
  • 여러 노드에 정책을 적용해야 하지만 모든 노드에 대해 단일 NNCP만 생성하려는 경우 Kubernetes NMState Operator는 정책을 각 노드에 순서대로 적용합니다. 클러스터 구성 파일의 maxUnavailable 매개변수를 사용하여 대상 노드에 대한 정책 적용 속도와 범위를 설정할 수 있습니다. 매개변수에 대해 더 낮은 백분율 값을 설정하면 정책 적용을 받는 소수의 노드에 영향을 미치는 중단으로 인해 클러스터 전체가 중단되는 위험을 줄일 수 있습니다.
  • 두 개의 NNCP 매니페스트에서 maxUnavailable 매개변수를 50% 로 설정하면 정책 구성 적용 범위가 클러스터의 노드 100%에 적용됩니다.
  • 노드가 다시 시작되면 Kubernetes NMState Operator는 노드에 정책을 적용하는 순서를 제어할 수 없습니다. Kubernetes NMState Operator는 상호 종속적인 정책을 순서대로 적용하여 네트워크 개체의 성능이 저하될 수 있습니다.
  • 모든 관련 네트워크 구성을 단일 정책으로 지정하는 것을 고려하세요.

1.8.1. 예제: 이더넷 인터페이스 노드 네트워크 구성 정책

NodeNetworkConfigurationPolicy 매니페스트를 클러스터에 적용하여 클러스터의 노드에서 이더넷 인터페이스를 구성합니다.

다음 YAML 파일은 이더넷 인터페이스의 매니페스트 예제입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: eth1-policy 
1

spec:
  nodeSelector: 
2

    kubernetes.io/hostname: <node01> 
3

  desiredState:
    interfaces:
    - name: eth1 
4

      description: Configuring eth1 on node01 
5

      type: ethernet 
6

      state: up 
7

      ipv4:
        dhcp: true 
8

        enabled: true 
9
Copy to Clipboard Toggle word wrap
1
정책 이름입니다.
2
선택 사항: nodeSelector 매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다.
3
이 예제에서는 hostname 노드 선택기를 사용합니다.
4
인터페이스 이름입니다.
5
선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
6
인터페이스 유형입니다. 이 예제에서는 이더넷 네트워킹 인터페이스를 생성합니다.
7
생성 후 인터페이스에 요청되는 상태입니다.
8
선택 사항: dhcp를 사용하지 않는 경우 고정 IP를 설정하거나 IP 주소 없이 인터페이스를 종료할 수 있습니다.
9
이 예제에서 ipv4를 활성화합니다.

1.8.2. 예: Linux 브리지 인터페이스 노드 네트워크 구성 정책

NodeNetworkConfigurationPolicy 매니페스트를 클러스터에 적용하여 클러스터의 노드에서 Linux 브리지 인터페이스를 만듭니다.

다음 YAML 파일은 Linux 브리지 인터페이스의 매니페스트 예제입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: br1-eth1-policy 
1

spec:
  nodeSelector: 
2

    kubernetes.io/hostname: <node01> 
3

  desiredState:
    interfaces:
      - name: br1 
4

        description: Linux bridge with eth1 as a port 
5

        type: linux-bridge 
6

        state: up 
7

        ipv4:
          dhcp: true 
8

          enabled: true 
9

        bridge:
          options:
            stp:
              enabled: false 
10

          port:
            - name: eth1 
11
Copy to Clipboard Toggle word wrap
1
정책 이름입니다.
2
선택 사항: nodeSelector 매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다.
3
이 예제에서는 hostname 노드 선택기를 사용합니다.
4
인터페이스 이름입니다.
5
선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
6
인터페이스 유형입니다. 이 예제에서는 브리지를 만듭니다.
7
생성 후 인터페이스에 요청되는 상태입니다.
8
선택 사항: dhcp를 사용하지 않는 경우 고정 IP를 설정하거나 IP 주소 없이 인터페이스를 종료할 수 있습니다.
9
이 예제에서 ipv4를 활성화합니다.
10
이 예제에서 stp를 비활성화합니다.
11
브리지가 연결되는 노드 NIC입니다.

1.8.3. 예제: VLAN 인터페이스 노드 네트워크 구성 정책

NodeNetworkConfigurationPolicy 매니페스트를 클러스터에 적용하여 클러스터의 노드에서 VLAN 인터페이스를 만듭니다.

참고

단일 NodeNetworkConfigurationPolicy 매니페스트에서 노드의 VLAN 인터페이스에 대한 모든 관련 구성을 정의합니다. 예를 들어, 노드에 대한 VLAN 인터페이스와 동일한 NodeNetworkConfigurationPolicy 매니페스트에서 VLAN 인터페이스에 대한 관련 경로를 정의합니다.

노드가 다시 시작되면 Kubernetes NMState Operator는 정책이 적용되는 순서를 제어할 수 없습니다. 따라서 관련 네트워크 구성에 대해 별도의 정책을 사용하는 경우 Kubernetes NMState Operator가 이러한 정책을 순서대로 적용하면 네트워크 개체가 저하될 수 있습니다.

다음 YAML 파일은 VLAN 인터페이스의 매니페스트 예제입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: vlan-eth1-policy 
1

spec:
  nodeSelector: 
2

    kubernetes.io/hostname: <node01> 
3

  desiredState:
    interfaces:
    - name: eth1.102 
4

      description: VLAN using eth1 
5

      type: vlan 
6

      state: up 
7

      vlan:
        base-iface: eth1 
8

        id: 102 
9
Copy to Clipboard Toggle word wrap
1
정책 이름입니다.
2
선택 사항: nodeSelector 매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다.
3
이 예제에서는 hostname 노드 선택기를 사용합니다.
4
인터페이스 이름입니다. 베어 메탈에 배포하는 경우 <interface_name>.<vlan_number> VLAN 형식만 지원됩니다.
5
선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
6
인터페이스 유형입니다. 이 예제에서는 VLAN을 만듭니다.
7
생성 후 인터페이스에 요청되는 상태입니다.
8
VLAN이 연결되는 노드 NIC입니다.
9
VLAN 태그입니다.

1.8.4. 예제: 본딩 인터페이스 노드 네트워크 구성 정책

NodeNetworkConfigurationPolicy 매니페스트를 클러스터에 적용하여 클러스터의 노드에서 본딩 인터페이스를 만듭니다.

참고

OpenShift Container Platform에서는 다음과 같은 본딩 모드만 지원합니다.

  • mode=1 active-backup
  • mode=2 balance-xor
  • mode=4 802.3ad

다른 본드 모드는 지원되지 않습니다.

다음 YAML 파일은 본딩 인터페이스의 매니페스트 예제입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: bond0-eth1-eth2-policy 
1

spec:
  nodeSelector: 
2

    kubernetes.io/hostname: <node01> 
3

  desiredState:
    interfaces:
    - name: bond0 
4

      description: Bond with ports eth1 and eth2 
5

      type: bond 
6

      state: up 
7

      ipv4:
        dhcp: true 
8

        enabled: true 
9

      link-aggregation:
        mode: active-backup 
10

        options:
          miimon: '140' 
11

        port: 
12

        - eth1
        - eth2
      mtu: 1450 
13
Copy to Clipboard Toggle word wrap
1
정책 이름입니다.
2
선택 사항: nodeSelector 매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다.
3
이 예제에서는 hostname 노드 선택기를 사용합니다.
4
인터페이스 이름입니다.
5
선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
6
인터페이스 유형입니다. 이 예제에서는 본딩을 생성합니다.
7
생성 후 인터페이스에 요청되는 상태입니다.
8
선택 사항: dhcp를 사용하지 않는 경우 고정 IP를 설정하거나 IP 주소 없이 인터페이스를 종료할 수 있습니다.
9
이 예제에서 ipv4를 활성화합니다.
10
본딩의 드라이버 모드입니다. 이 예제에서는 활성 백업 모드를 사용합니다.
11
선택 사항: 이 예제에서는 miimon을 사용하여 140ms마다 본딩 링크를 검사합니다.
12
본딩의 하위 노드 NIC입니다.
13
선택 사항: 본딩의 MTU(최대 전송 단위)입니다. 지정하지 않는 경우 이 값은 기본적으로 1500으로 설정됩니다.

1.8.5. 예제: 노드 네트워크 구성 정책이 동일한 여러 인터페이스

동일한 노드 네트워크 구성 정책으로 여러 개의 인터페이스를 생성할 수 있습니다. 이러한 인터페이스는 서로를 참조할 수 있으므로 단일 정책 매니페스트를 사용하여 네트워크 구성을 빌드하고 배포할 수 있습니다.

다음 예제 YAML 파일은 두 개의 NIC와 VLAN에 걸쳐 bond10 이라는 이름의 본드를 생성하고, 이 본드에 연결되는 bond10.103 이라는 이름의 VLAN을 생성합니다.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: bond-vlan 
1

spec:
  nodeSelector: 
2

    kubernetes.io/hostname: <node01> 
3

  desiredState:
    interfaces:
    - name: bond10 
4

      description: Bonding eth2 and eth3 
5

      type: bond 
6

      state: up 
7

      link-aggregation:
        mode: balance-xor 
8

        options:
          miimon: '140' 
9

        port: 
10

        - eth2
        - eth3
    - name: bond10.103 
11

      description: vlan using bond10 
12

      type: vlan 
13

      state: up 
14

      vlan:
         base-iface: bond10 
15

         id: 103 
16

      ipv4:
        dhcp: true 
17

        enabled: true 
18
Copy to Clipboard Toggle word wrap
1
정책 이름입니다.
2
선택 사항: nodeSelector 매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다.
3
이 예제에서는 호스트 이름 노드 선택기를 사용합니다.
4 11
인터페이스 이름입니다.
5 12
선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
6 13
인터페이스 유형입니다.
7 14
생성 후 인터페이스에 요청되는 상태입니다.
8
본딩의 드라이버 모드입니다.
9
선택 사항: 이 예제에서는 miimon을 사용하여 140ms마다 본딩 링크를 검사합니다.
10
본딩의 하위 노드 NIC입니다.
15
VLAN이 연결되는 노드 NIC입니다.
16
VLAN 태그입니다.
17
선택 사항: DHCP를 사용하지 않는 경우 고정 IP를 설정하거나 IP 주소 없이 인터페이스를 그대로 둘 수 있습니다.
18
이 예에서는 IPv4를 활성화합니다.

1.8.6. 예: 가상 기능에 대한 노드 네트워크 구성 정책

NodeNetworkConfigurationPolicy 매니페스트를 적용하여 기존 클러스터의 SR-IOV(Single Root I/O Virtualization) 네트워크 가상 기능(VF)에 대한 호스트 네트워크 설정을 업데이트합니다.

다음 작업을 완료하려면 기존 클러스터에 NodeNetworkConfigurationPolicy 매니페스트를 적용할 수 있습니다.

  • VF에 대한 QoS 호스트 네트워크 설정을 구성하여 성능을 최적화합니다.
  • 네트워크 인터페이스에 대한 VF를 추가, 제거 또는 업데이트합니다.
  • VF 본딩 구성을 관리합니다.
참고

SR-IOV 네트워크 운영자를 통해 관리되는 물리적 기능에서 NMState를 사용하여 SR-IOV VF에 대한 호스트 네트워크 설정을 업데이트하려면 관련 SriovNetworkNodePolicy 리소스에서 externallyManaged 매개변수를 true 로 설정해야 합니다. 자세한 내용은 추가 자료 섹션을 참조하세요.

다음 YAML 파일은 VF에 대한 QoS 정책을 정의하는 매니페스트의 예입니다. 이 YAML에는 사용자 고유의 정보로 바꿔야 하는 샘플 값이 포함되어 있습니다.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: qos 
1

spec:
  nodeSelector: 
2

    node-role.kubernetes.io/worker: "" 
3

  desiredState:
    interfaces:
      - name: ens1f0 
4

        description: Change QOS on VF0 
5

        type: ethernet 
6

        state: up 
7

        ethernet:
         sr-iov:
           total-vfs: 3 
8

           vfs:
           - id: 0 
9

             max-tx-rate: 200 
10
Copy to Clipboard Toggle word wrap
1
정책 이름입니다.
2
선택 사항: nodeSelector 매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다.
3
이 예는 작업자 역할이 있는 모든 노드에 적용됩니다.
4
물리적 기능(PF) 네트워크 인터페이스의 이름입니다.
5
선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
6
인터페이스 유형입니다.
7
구성 후 인터페이스에 대한 요청 상태입니다.
8
VF의 총 수.
9
ID가 0 인 VF를 식별합니다.
10
VF의 최대 전송 속도를 Mbps 단위로 설정합니다. 이 샘플 값은 200Mbps의 속도를 설정합니다.

다음 YAML 파일은 네트워크 인터페이스에 VF를 추가하는 매니페스트의 예입니다.

이 샘플 구성에서는 ens1f1v0 VF가 ens1f1 물리적 인터페이스에 생성되고, 이 VF가 본딩된 네트워크 인터페이스 bond0 에 추가됩니다. 본드는 중복성을 위해 활성 백업 모드를 사용합니다. 이 예에서 VF는 하드웨어 오프로드를 사용하여 물리적 인터페이스에서 직접 VLAN을 관리하도록 구성됩니다.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: addvf 
1

spec:
  nodeSelector: 
2

    node-role.kubernetes.io/worker: "" 
3

  maxUnavailable: 3
  desiredState:
    interfaces:
      - name: ens1f1 
4

        type: ethernet
        state: up
        ethernet:
            sr-iov:
              total-vfs: 1 
5

              vfs:
                - id: 0
                  trust: true 
6

                  vlan-id: 477 
7

      - name: bond0 
8

        description: Attach VFs to bond 
9

        type: bond 
10

        state: up 
11

        link-aggregation:
          mode: active-backup 
12

          options:
            primary: ens1f0v0 
13

          port: 
14

            - ens1f0v0
            - ens1f1v0 
15
Copy to Clipboard Toggle word wrap
1
정책 이름입니다.
2
선택 사항: nodeSelector 매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다.
3
이 예는 작업자 역할이 있는 모든 노드에 적용됩니다.
4
VF 네트워크 인터페이스의 이름입니다.
5
생성할 VF의 수.
6
활성 및 백업 VF 간의 장애 조치 본딩을 허용하도록 설정합니다.
7
VLAN의 ID입니다. 이 예제에서는 하드웨어 오프로드를 사용하여 VF에서 직접 VLAN을 정의합니다.
8
본딩 네트워크 인터페이스의 이름입니다.
9
선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
10
인터페이스 유형입니다.
11
구성 후 인터페이스에 대한 요청 상태입니다.
12
채권에 대한 채권 정책.
13
1차 부착된 본딩 포트입니다.
14
본딩된 네트워크 인터페이스의 포트입니다.
15
이 예에서 VLAN 네트워크 인터페이스는 본딩된 네트워크 인터페이스에 추가 인터페이스로 추가됩니다.

NodeNetworkConfigurationPolicy 사용자 정의 리소스(CR)를 적용하여 VRF(가상 라우팅 및 포워딩) 인스턴스를 네트워크 인터페이스와 연결합니다.

VRF 인스턴스를 네트워크 인터페이스와 연결하면 트래픽 격리, 독립적인 라우팅 결정, 네트워크 리소스의 논리적 분리를 지원할 수 있습니다.

주의

VRF(가상 경로 전달)를 구성할 때 VRF 값을 1000 보다 작은 테이블 ID로 변경해야 합니다. 1000 보다 큰 값은 OpenShift Container Platform에 예약되어 있기 때문입니다.

베어 메탈 환경에서는 MetalLB를 사용하여 VRF 인스턴스에 속한 인터페이스를 통해 로드 밸런서 서비스를 알릴 수 있습니다. 자세한 내용은 추가 자료 섹션을 참조하세요.

다음 YAML 파일은 VRF 인스턴스를 네트워크 인터페이스에 연결하는 예입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: vrfpolicy 
1

spec:
  nodeSelector:
    vrf: "true" 
2

  maxUnavailable: 3
  desiredState:
    interfaces:
      - name: ens4vrf 
3

        type: vrf 
4

        state: up
        vrf:
          port:
            - ens4 
5

          route-table-id: 2 
6
Copy to Clipboard Toggle word wrap
1
정책의 이름입니다.
2
이 예제에서는 vrf:true 레이블이 있는 모든 노드에 정책을 적용합니다.
3
인터페이스의 이름.
4
인터페이스 유형입니다. 이 예제에서는 VRF 인스턴스를 생성합니다.
5
VRF가 연결되는 노드 인터페이스입니다.
6
VRF에 대한 경로 테이블 ID의 이름입니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat