3장. 2차 네트워크


3.1. OVN-Kubernetes에서 보조 네트워크 생성

클러스터 관리자는 NAD( NetworkAttachmentDefinition ) 리소스를 사용하여 클러스터에 대한 보조 네트워크를 구성할 수 있습니다.

참고

OpenShift Container Platform의 향후 버전에서는 사용자 정의 네트워크를 보조 네트워크로 지원하는 기능이 추가될 예정입니다.

3.1.1. OVN-Kubernetes 보조 네트워크 구성

Red Hat OpenShift Networking OVN-Kubernetes 네트워크 플러그인을 사용하면 포드에 대한 보조 네트워크 인터페이스를 구성할 수 있습니다. 보조 네트워크 인터페이스를 구성하려면 NetworkAttachmentDefinition 사용자 정의 리소스 정의(CRD)에서 구성을 정의해야 합니다.

참고

Pod 및 다중 네트워크 정책 생성은 노드의 OVN-Kubernetes 제어 평면 에이전트가 연관된 네트워크 연결 정의 CRD를 처리할 때까지 보류 상태로 유지될 수 있습니다.

OVN-Kubernetes 보조 네트워크를 2계층, 3계층 또는 로컬넷 토폴로지로 구성할 수 있습니다. 이러한 토폴로지에서 지원되는 기능에 대한 자세한 내용은 "UserDefinedNetwork 및 NetworkAttachmentDefinition 지원 매트릭스"를 참조하세요.

다음 섹션에서는 OVN-Kubernetes가 현재 보조 네트워크에 허용하는 각 토폴로지에 대한 구성 예를 제공합니다.

참고

네트워크 이름은 고유해야 합니다. 예를 들어, 동일한 네트워크를 참조하는 서로 다른 구성을 가진 여러 NetworkAttachmentDefinition CRD를 만드는 것은 지원되지 않습니다.

3.1.1.1. OVN-Kubernetes 보조 네트워크에 지원되는 플랫폼

다음 지원 플랫폼에서 OVN-Kubernetes 보조 네트워크를 사용할 수 있습니다.

  • 베어 메탈
  • IBM Power®
  • IBM Z®
  • IBM® LinuxONE
  • VMware vSphere
  • Red Hat 오픈스택 플랫폼(RHOSP)

3.1.1.2. OVN-Kubernetes 네트워크 플러그인 JSON 구성 테이블

다음 표에서는 OVN-Kubernetes CNI 네트워크 플러그인의 구성 매개변수를 설명합니다.

Expand
표 3.1. OVN-Kubernetes 네트워크 플러그인 JSON 구성 테이블
필드유형설명

cniVersion

string

CNI 사양 버전. 필요한 값은 0.3.1 입니다.

name

string

네트워크의 이름. 이러한 네트워크는 네임스페이스가 없습니다. 예를 들어, l2-network 라는 네트워크는 다른 네임스페이스에 있는 NetworkAttachmentDefinition 사용자 정의 리소스(CR)에서 참조될 수 있습니다. 이 구성을 사용하면 서로 다른 네임스페이스에서 NetworkAttachmentDefinition CR을 사용하는 포드가 동일한 보조 네트워크를 통해 통신할 수 있습니다. 그러나 NetworkAttachmentDefinition CR은 topology , subnets , mtu , excludeSubnetsvlanID 와 같은 동일한 네트워크별 매개변수를 공유해야 합니다. vlanID 매개변수는 토폴로지 필드가 localnet 으로 설정된 경우에만 적용됩니다.

type

string

구성할 CNI 플러그인의 이름입니다. 이 값은 ovn-k8s-cni-overlay 로 설정해야 합니다.

토폴로지

string

네트워크의 토폴로지 구성. layer2 또는 localnet 중 하나여야 합니다.

subnets

string

클러스터 전반의 네트워크에 사용할 서브넷입니다.

"topology":"layer2" 배포의 경우 IPv6( 2001:DBB::/64 ) 및 듀얼 스택( 192.168.100.0/24,2001:DBB::/64 ) 서브넷이 지원됩니다.

생략하면 네트워크를 구현하는 논리적 스위치는 2계층 통신만 제공하고 사용자는 포드에 대한 IP 주소를 구성해야 합니다. 포트 보안은 MAC 스푸핑만 방지합니다.

mtu

string

최대 전송 단위(MTU). 값을 설정하지 않으면 클러스터 네트워크 운영자(CNO)가 기본 네트워크 인터페이스의 언더레이 MTU, Geneve(일반 네트워크 가상화 캡슐화)와 같은 Pod 네트워크의 오버레이 MTU, IPsec과 같은 활성화된 기능의 바이트 용량의 차이를 계산하여 기본 MTU 값을 설정합니다.

netAttachDefName

string

이 구성이 포함되는 네트워크 연결 정의 CRD의 메타데이터 네임스페이스이름입니다 . 예를 들어, 이 구성이 l2-network 라는 이름의 네임스페이스 ns1 에 있는 NetworkAttachmentDefinition CRD에 정의된 경우, 이는 ns1/l2-network 로 설정되어야 합니다.

excludeSubnets

string

CIDR과 IP 주소를 쉼표로 구분한 목록입니다. IP 주소는 할당 가능한 IP 주소 풀에서 제거되며 결코 포드에 전달되지 않습니다.

vlanID

integer

토폴로지가 localnet 으로 설정된 경우 지정된 VLAN 태그가 이 보조 네트워크의 트래픽에 할당됩니다. 기본값은 VLAN 태그를 할당하지 않는 것입니다.

physicalNetworkName

string

토폴로지가 localnet 으로 설정된 경우 동일한 물리적 네트워크 매핑을 여러 네트워크 오버레이에서 재사용할 수 있습니다. OVN 오버레이가 연결되는 물리적 네트워크의 이름을 지정합니다. 생략하면 기본값은 localnet 네트워크의 이름 입니다. 서로 다른 네트워크를 분리하려면 오버레이 간에 동일한 물리적 네트워크를 공유할 때 다른 VLAN 태그를 사용해야 합니다.

3.1.1.3. 다중 네트워크 정책과의 호환성

k8s.cni.cncf.io API 그룹의 MultiNetworkPolicy 사용자 정의 리소스 정의(CRD)가 제공하는 다중 네트워크 정책 API는 OVN-Kubernetes 보조 네트워크와 호환됩니다. 네트워크 정책을 정의할 때 사용할 수 있는 네트워크 정책 규칙은 OVN-Kubernetes 보조 네트워크에서 서브넷 필드를 정의하는지 여부에 따라 달라집니다. 자세한 내용은 다음 표를 참조하세요.

Expand
표 3.2. 서브넷 CNI 구성을 기반으로 지원되는 다중 네트워크 정책 선택기
서브넷 필드가 지정됨허용된 다중 네트워크 정책 선택기

제공됨

  • podSelectornamespaceSelector
  • ipBlock

없음

  • ipBlock

MultiNetworkPolicy 객체에서 k8s.v1.cni.cncf.io/policy-for 주석을 사용하여 NetworkAttachmentDefinition (NAD) 사용자 정의 리소스(CR)를 가리킬 수 있습니다. NAD CR은 정책이 적용되는 네트워크를 정의합니다. 다음 예제 다중 네트워크 정책은 blue2 라는 보조 네트워크에 대한 보조 네트워크 CNI 구성에서 서브넷 필드가 정의된 경우에만 유효합니다.

포드 선택기를 사용하는 다중 네트워크 정책 예

apiVersion: k8s.cni.cncf.io/v1beta1
kind: MultiNetworkPolicy
metadata:
  name: allow-same-namespace
  annotations:
    k8s.v1.cni.cncf.io/policy-for: blue2 
1

spec:
  podSelector:
  ingress:
  - from:
    - podSelector: {}
Copy to Clipboard Toggle word wrap

다음 예제에서는 OVN-Kubernetes 보조 네트워크에 항상 유효한 ipBlock 네트워크 정책 선택기를 사용합니다.

IP 블록 선택기를 사용하는 다중 네트워크 정책 예

apiVersion: k8s.cni.cncf.io/v1beta1
kind: MultiNetworkPolicy
metadata:
  name:  ingress-ipblock
  annotations:
    k8s.v1.cni.cncf.io/policy-for: default/flatl2net
spec:
  podSelector:
    matchLabels:
      name: access-control
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 10.200.0.0/30
Copy to Clipboard Toggle word wrap

3.1.1.4. 로컬넷 스위치 토폴로지에 대한 구성

스위치드 로컬 넷 토폴로지는 클러스터 전체의 논리적 스위치를 통해 네트워크 연결 정의(NAD)로 생성된 작업 부하를 물리적 네트워크로 상호 연결합니다.

OVN-Kubernetes 보조 네트워크로 사용하려면 보조 네트워크를 ovs-bridge에 매핑해야 합니다. 브리지 매핑을 통해 네트워크 트래픽이 물리적 네트워크에 도달할 수 있습니다. 브리지 매핑은 인터페이스 레이블이라고도 하는 물리적 네트워크 이름을 Open vSwitch(OVS)로 생성된 브리지에 연결합니다.

nmstate.io/v1 API 그룹의 일부인 NodeNetworkConfigurationPolicy (NNCP) 객체를 생성하여 매핑을 선언적으로 생성할 수 있습니다. 이 API는 NMState Operator가 제공합니다. 이 API를 사용하면 지정한 nodeSelector 표현식(예: node-role.kubernetes.io/worker: '' ) 과 일치하는 노드에 브리지 매핑을 적용할 수 있습니다. 이러한 선언적 접근 방식을 통해 NMState 연산자는 노드 선택기에서 지정한 모든 노드에 보조 네트워크 구성을 자동적이고 투명하게 적용합니다.

보조 네트워크를 연결할 때 기존 br-ex 브리지를 사용하거나 새 브리지를 만들 수 있습니다. 어떤 접근 방식을 사용할지는 사용자의 특정 네트워크 인프라에 따라 달라집니다. 다음 접근 방식을 고려해보세요.

  • 노드에 네트워크 인터페이스가 하나만 있는 경우 기존 브리지를 사용해야 합니다. 이 네트워크 인터페이스는 OVN-Kubernetes가 소유 및 관리하며, br-ex 브리지에서 제거하거나 인터페이스 구성을 변경해서는 안 됩니다. 네트워크 인터페이스를 제거하거나 변경하면 클러스터 네트워크가 제대로 작동하지 않게 됩니다.
  • 노드에 여러 개의 네트워크 인터페이스가 포함되어 있는 경우 다른 네트워크 인터페이스를 새 브리지에 연결하고 이를 보조 네트워크에 사용할 수 있습니다. 이 접근 방식은 기본 클러스터 네트워크로부터 트래픽을 격리합니다.

다음 예에서는 localnet1 네트워크가 br-ex 브리지에 매핑됩니다.

브리지 공유를 위한 예시 매핑

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

spec:
  nodeSelector:
    node-role.kubernetes.io/worker: '' 
2

  desiredState:
    ovn:
      bridge-mappings:
      - localnet: localnet1 
3

        bridge: br-ex 
4

        state: present 
5
Copy to Clipboard Toggle word wrap

1 1
구성 객체의 이름입니다.
2
노드 네트워크 구성 정책을 적용할 노드를 지정하는 노드 선택기입니다.
3
트래픽이 OVS 브리지로 전달되는 보조 네트워크의 이름입니다. 이 보조 네트워크는 OVN-Kubernetes 보조 네트워크를 정의하는 NetworkAttachmentDefinition CRD의 spec.config.name 필드 이름과 일치해야 합니다.
4
노드에 있는 OVS 브리지의 이름입니다. 이 값은 state: present를 지정한 경우에만 필요합니다.
5
매핑에 대한 상태입니다. 브리지를 추가하려면 존재 해야 하고, 브리지를 제거하려면 없어야 합니다 . 기본값은 present 입니다.

다음 JSON 예제는 localnet1 이라는 이름의 localnet 보조 네트워크를 구성합니다. mtu 매개변수 값은 br-ex 브리지 인터페이스에 매핑된 보조 네트워크 인터페이스에 설정된 MTU 값과 일치해야 합니다.

{
  "cniVersion": "0.3.1",
  "name": "localnet1",
  "type": "ovn-k8s-cni-overlay",
  "topology":"localnet",
  "physicalNetworkName": "localnet1",
  "subnets": "202.10.130.112/28",
  "vlanID": 33,
  "mtu": 1500,
  "netAttachDefName": "ns1/localnet-network",
  "excludeSubnets": "10.100.200.0/29"
}
Copy to Clipboard Toggle word wrap

다음 예에서는 localnet2 네트워크 인터페이스가 ovs-br1 브리지에 연결됩니다. 이 첨부 파일을 통해 네트워크 인터페이스를 OVN-Kubernetes 네트워크 플러그인에서 보조 네트워크로 사용할 수 있습니다.

여러 인터페이스가 있는 노드에 대한 예제 매핑

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: ovs-br1-multiple-networks 
1

spec:
  nodeSelector:
    node-role.kubernetes.io/worker: '' 
2

  desiredState:
    interfaces:
    - name: ovs-br1 
3

      description: |-
        A dedicated OVS bridge with eth1 as a port
        allowing all VLANs and untagged traffic
      type: ovs-bridge
      state: up
      bridge:
        allow-extra-patch-ports: true
        options:
          stp: false
          mcast-snooping-enable: true 
4

        port:
        - name: eth1 
5

    ovn:
      bridge-mappings:
      - localnet: localnet2 
6

        bridge: ovs-br1 
7

        state: present 
8
Copy to Clipboard Toggle word wrap

1
구성 개체의 이름을 지정합니다.
2
노드 네트워크 구성 정책이 적용되는 노드를 식별하는 노드 선택기를 지정합니다.
3
OVN-Kubernetes에서 클러스터 트래픽에 사용하는 기본 브리지와 별도로 작동하는 새로운 OVS 브리지를 지정합니다.
4
멀티캐스트 스누핑을 활성화할지 여부를 지정합니다. 멀티캐스트 스누핑을 활성화하면 네트워크 장치가 모든 네트워크 구성원에게 멀티캐스트 트래픽을 플러딩하는 것을 방지할 수 있습니다. 기본적으로 OVS 브리지는 멀티캐스트 스누핑을 활성화하지 않습니다. 기본값은 false입니다.
5
새로운 OVS 브리지와 연결할 호스트 시스템의 네트워크 장치를 지정합니다.
6
OVS 브리지로 트래픽을 전달하는 보조 네트워크의 이름을 지정합니다. 이 이름은 OVN-Kubernetes 보조 네트워크를 정의하는 NetworkAttachmentDefinition CRD의 spec.config.name 필드 값과 일치해야 합니다.
7
노드의 OVS 브리지 이름을 지정합니다. 이 값은 state: present가 설정된 경우에만 필요합니다.
8
매핑 상태를 지정합니다. 브리지를 추가하려면 유효한 값이 존재 하고, 브리지를 제거하려면 유효한 값 이 없습니다 . 기본값은 present 입니다.

다음 JSON 예제는 localnet2 라는 이름의 localnet 보조 네트워크를 구성합니다. mtu 매개변수 값은 eth1 보조 네트워크 인터페이스에 설정된 MTU 값과 일치해야 합니다.

{
  "cniVersion": "0.3.1",
  "name": "localnet2",
  "type": "ovn-k8s-cni-overlay",
  "topology":"localnet",
  "physicalNetworkName": "localnet2",
  "subnets": "202.10.130.112/28",
  "vlanID": 33,
  "mtu": 1500,
  "netAttachDefName": "ns1/localnet-network",
  "excludeSubnets": "10.100.200.0/29"
}
Copy to Clipboard Toggle word wrap
3.1.1.4.1. 2계층 스위치 토폴로지에 대한 구성

스위치드(2계층) 토폴로지 네트워크는 클러스터 전체의 논리적 스위치를 통해 작업 부하를 상호 연결합니다. 이 구성은 IPv6 및 듀얼 스택 배포에 사용할 수 있습니다.

참고

2계층 스위치 토폴로지 네트워크는 클러스터 내의 포드 간 데이터 패킷 전송만 허용합니다.

다음 JSON 예제는 스위치드 보조 네트워크를 구성합니다.

{
  "cniVersion": "0.3.1",
  "name": "l2-network",
  "type": "ovn-k8s-cni-overlay",
  "topology":"layer2",
  "subnets": "10.100.200.0/24",
  "mtu": 1300,
  "netAttachDefName": "ns1/l2-network",
  "excludeSubnets": "10.100.200.0/29"
}
Copy to Clipboard Toggle word wrap

3.1.1.5. 보조 네트워크에 대한 포드 구성

k8s.v1.cni.cncf.io/networks 주석을 통해 보조 네트워크 연결을 지정해야 합니다.

다음 예제에서는 이 가이드에 제시된 각 부착 구성에 대해 하나씩, 두 개의 보조 부착물이 있는 포드를 제공합니다.

apiVersion: v1
kind: Pod
metadata:
  annotations:
    k8s.v1.cni.cncf.io/networks: l2-network
  name: tinypod
  namespace: ns1
spec:
  containers:
  - args:
    - pause
    image: k8s.gcr.io/e2e-test-images/agnhost:2.36
    imagePullPolicy: IfNotPresent
    name: agnhost-container
Copy to Clipboard Toggle word wrap

3.1.1.6. 고정 IP 주소로 포드 구성

다음 예제에서는 정적 IP 주소로 Pod를 프로비저닝합니다.

참고
  • 네임스페이스 범위 객체인 보조 네트워크 연결이 레이어 2 또는 로컬넷 토폴로지를 사용하는 경우에만 포드의 보조 네트워크 연결에 대한 IP 주소를 지정할 수 있습니다.
  • 포드에 대한 정적 IP 주소를 지정하는 것은 첨부 파일 구성에 서브넷이 없는 경우에만 가능합니다.
apiVersion: v1
kind: Pod
metadata:
  annotations:
    k8s.v1.cni.cncf.io/networks: '[
      {
        "name": "l2-network", 
1

        "mac": "02:03:04:05:06:07", 
2

        "interface": "myiface1", 
3

        "ips": [
          "192.0.2.20/24"
          ] 
4

      }
    ]'
  name: tinypod
  namespace: ns1
spec:
  containers:
  - args:
    - pause
    image: k8s.gcr.io/e2e-test-images/agnhost:2.36
    imagePullPolicy: IfNotPresent
    name: agnhost-container
Copy to Clipboard Toggle word wrap
1
네트워크의 이름. 이 값은 모든 NetworkAttachmentDefinition CRD에서 고유해야 합니다.
2
인터페이스에 할당할 MAC 주소입니다.
3
Pod에 대해 생성될 네트워크 인터페이스의 이름입니다.
4
네트워크 인터페이스에 할당할 IP 주소입니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat