23.2. 추가 네트워크 구성


클러스터 관리자는 클러스터에 대한 추가 네트워크를 구성할 수 있습니다. 지원되는 네트워크 유형은 다음과 같습니다.

23.2.1. 추가 네트워크 관리 방법

두 가지 방법으로 추가 네트워크의 라이프사이클을 관리할 수 있습니다. 각 접근 방식은 상호 배타적이며 한 번에 추가 네트워크를 관리하는 데 하나의 접근 방식만 사용할 수 있습니다. 두 방법 모두 추가 네트워크는 사용자가 구성하는 CNI(Container Network Interface) 플러그인에 의해 관리됩니다.

추가 네트워크의 경우 추가 네트워크의 일부로 구성하는 IPAM(IP 주소 관리) CNI 플러그인을 통해 IP 주소가 프로비저닝됩니다. IPAM 플러그인은 DHCP 및 고정 할당을 포함한 다양한 IP 주소 할당 방식을 지원합니다.

  • CNO(Cluster Network Operator) 구성을 수정합니다. CNO는 NetworkAttachmentDefinition 오브젝트를 자동으로 생성하고 관리합니다. 오브젝트 라이프사이클을 관리하는 것 외에도 CNO는 DHCP 할당된 IP 주소를 사용하는 추가 네트워크에 DHCP를 사용할 수 있도록 합니다.
  • YAML 매니페스트 적용: NetworkAttachmentDefinition 오브젝트를 생성하여 추가 네트워크를 직접 관리할 수 있습니다. 이 방법을 사용하면 CNI 플러그인을 연결할 수 있습니다.
참고

OVN SDN을 사용하여 RHOSP(Red Hat OpenStack Platform)에 여러 네트워크 인터페이스를 사용하여 OpenShift Container Platform 노드를 배포하는 경우 보조 인터페이스의 DNS 구성이 기본 인터페이스의 DNS 구성보다 우선할 수 있습니다. 이 경우 보조 인터페이스에 연결된 서브넷 ID의 DNS 네임 서버를 제거합니다.

$ openstack subnet set --dns-nameserver 0.0.0.0 <subnet_id>

23.2.2. 추가 네트워크 연결 구성

추가 네트워크는 k8s.cni.cncf.io API 그룹에서 NetworkAttachmentDefinition API를 사용하여 구성됩니다.

중요

이 정보는 프로젝트 관리 사용자가 액세스할 수 있으므로 중요한 정보 또는 시크릿을 NetworkAttachmentDefinition 오브젝트에 저장하지 마십시오.

API의 구성은 다음 표에 설명되어 있습니다.

표 23.1. NetworkAttachmentDefinition API 필드
필드유형설명

metadata.name

string

추가 네트워크의 이름입니다.

metadata.namespace

string

오브젝트와 연결된 네임스페이스입니다.

spec.config

string

JSON 형식의 CNI 플러그인 구성입니다.

23.2.2.1. Cluster Network Operator를 통한 추가 네트워크 구성

추가 네트워크 연결 구성은 CNO(Cluster Network Operator) 구성의 일부로 지정됩니다.

다음 YAML은 CNO를 사용하여 추가 네트워크를 관리하기 위한 구성 매개변수를 설명합니다.

CNO(Cluster Network Operator) 구성

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  # ...
  additionalNetworks: 1
  - name: <name> 2
    namespace: <namespace> 3
    rawCNIConfig: |- 4
      {
        ...
      }
    type: Raw

1
하나 이상의 추가 네트워크 구성으로 구성된 배열입니다.
2
생성 중인 추가 네트워크 연결의 이름입니다. 이름은 지정된 namespace 내에서 고유해야 합니다.
3
네트워크를 연결할 네임스페이스입니다. 값을 지정하지 않으면 default 네임스페이스가 사용됩니다.
중요

OVN-Kubernetes 네트워크 플러그인의 네임스페이스 문제를 방지하려면 이 네임스페이스가 기본 추가 네트워크 연결을 위해 예약되어 있으므로 추가 네트워크 연결 기본값 을 지정하지 마십시오.

4
JSON 형식의 CNI 플러그인 구성입니다.

23.2.2.2. YAML 매니페스트에서 추가 네트워크 구성

추가 네트워크의 구성은 다음 예와 같이 YAML 구성 파일에서 지정됩니다.

apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
  name: <name> 1
spec:
  config: |- 2
    {
      ...
    }
1
생성 중인 추가 네트워크 연결의 이름입니다.
2
JSON 형식의 CNI 플러그인 구성입니다.

23.2.3. 추가 네트워크 유형의 구성

추가 네트워크의 특정 구성 필드는 다음 섹션에 설명되어 있습니다.

23.2.3.1. 브리지 추가 네트워크 구성

다음 오브젝트는 브릿지 CNI 플러그인의 구성 매개변수를 설명합니다.

표 23.2. 브릿지 CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름: bridge.

IPAM

object

IPAM CNI 플러그인에 대한 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다.

Bridge

string

선택 사항: 사용할 가상 브리지의 이름을 지정합니다. 브릿지 인터페이스가 호스트에 없으면 생성됩니다. 기본값은 cni0입니다.

ipMasq

boolean

선택 사항: 가상 네트워크를 떠나는 트래픽에 대해 IP 마스커레이딩을 활성화하려면 true 로 설정합니다. 모든 트래픽의 소스 IP 주소가 브리지의 IP 주소로 다시 작성됩니다. 브리지에 IP 주소가 없으면 이 설정이 적용되지 않습니다. 기본값은 false입니다.

isGateway

boolean

선택 사항: 브릿지에 IP 주소를 할당하려면 true 로 설정합니다. 기본값은 false입니다.

isDefaultGateway

boolean

선택 사항: 브릿지를 가상 네트워크의 기본 게이트웨이로 구성하려면 true 로 설정합니다. 기본값은 false입니다. isDefaultGatewaytrue로 설정되면 isGateway도 자동으로 true로 설정됩니다.

forceAddress

boolean

선택 사항: 이전에 할당된 IP 주소를 가상 브리지에 할당할 수 있도록 true 로 설정합니다. false로 설정하면 중첩되는 하위 집합의 IPv4 주소 또는 IPv6 주소가 가상 브릿지에 지정되는 경우 오류가 발생합니다. 기본값은 false입니다.

hairpinMode

boolean

선택 사항: 가상 브리지가 수신한 가상 포트를 통해 이더넷 프레임을 다시 보낼 수 있도록 하려면 true 로 설정합니다. 이 모드를 반사 릴레이라고도 합니다. 기본값은 false입니다.

promiscMode

boolean

선택 사항: 브릿지에서 무차별 모드를 활성화하려면 true 로 설정합니다. 기본값은 false입니다.

vlan

string

선택 사항: VLAN(가상 LAN) 태그를 정수 값으로 지정합니다. 기본적으로 VLAN 태그는 할당되지 않습니다.

preserveDefaultVlan

string

선택 사항: 기본 vlan을 브리지에 연결된 veth 끝에 유지해야 하는지 여부를 나타냅니다. 기본값은 true입니다.

mtu

integer

선택 사항: 최대 전송 단위(MTU)를 지정된 값으로 설정합니다. 기본값은 커널에 의해 자동으로 설정됩니다.

enabledad

boolean

선택 사항: 컨테이너 사이드 veth 에 대해 중복 주소 탐지를 활성화합니다. 기본값은 false입니다.

macspoofchk

boolean

선택 사항: mac 스푸핑 검사를 활성화하여 컨테이너에서 발생하는 트래픽을 인터페이스의 mac 주소로 제한합니다. 기본값은 false입니다.

참고

VLAN 매개 변수는 veth 의 호스트에서 VLAN 태그를 구성하고 브리지 인터페이스에서 vlan_filtering 기능도 활성화합니다.

참고

L2 네트워크에 대한 uplink를 구성하려면 다음 명령을 사용하여 uplink 인터페이스에서 vlan을 허용해야 합니다.

$  bridge vlan add vid VLAN_ID dev DEV
23.2.3.1.1. 브릿지 구성 예

다음 예제는 이름이 bridge-net인 추가 네트워크를 구성합니다.

{
  "cniVersion": "0.3.1",
  "name": "bridge-net",
  "type": "bridge",
  "isGateway": true,
  "vlan": 2,
  "ipam": {
    "type": "dhcp"
    }
}

23.2.3.2. 호스트 장치 추가 네트워크에 대한 구성

참고

device ,hwaddr,kernelpath 또는 pciBusID 매개변수 중 하나만 설정하여 네트워크 장치를 지정합니다.

다음 오브젝트는 호스트 장치 CNI 플러그인의 구성 매개변수를 설명합니다.

표 23.3. 호스트 장치 CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름: 호스트 장치.

device

string

선택사항: 장치 이름(예: eth0) 입니다.

hwaddr

string

선택사항: 장치 하드웨어 MAC 주소입니다.

kernelpath

string

선택 사항: Linux 커널 장치 경로입니다(예: /sys/devices/pci0000:00/0000:00:1f.6 ).

pciBusID

string

선택 사항: 네트워크 장치의 PCI 주소(예 : 0000:00:1f.6)

23.2.3.2.1. 호스트 장치 구성 예

다음 예제는 이름이 hostdev-net인 추가 네트워크를 구성합니다.

{
  "cniVersion": "0.3.1",
  "name": "hostdev-net",
  "type": "host-device",
  "device": "eth1"
}

23.2.3.3. VLAN 추가 네트워크에 대한 구성

다음 오브젝트는 VLAN CNI 플러그인의 구성 매개변수를 설명합니다.

표 23.4. VLAN CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름: vlan.

master

string

네트워크 연결과 연결할 이더넷 인터페이스입니다. 마스터를 지정하지 않으면 기본 네트워크 경로에 대한 인터페이스가 사용됩니다.

vlanId

integer

vlan의 ID를 설정합니다.

IPAM

object

IPAM CNI 플러그인에 대한 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다.

mtu

integer

선택 사항: 최대 전송 단위(MTU)를 지정된 값으로 설정합니다. 기본값은 커널에 의해 자동으로 설정됩니다.

dns

integer

선택 사항: 반환할 DNS 정보(예: 우선순위 지정 DNS 이름 서버 목록)입니다.

linkInContainer

boolean

선택 사항: 마스터 인터페이스가 컨테이너 네트워크 네임스페이스 또는 기본 네트워크 네임스페이스에 있는지 여부를 지정합니다.

23.2.3.3.1. VLAN 구성 예

다음 예제에서는 vlan-net 이라는 추가 네트워크를 구성합니다.

{
  "name": "vlan-net",
  "cniVersion": "0.3.1",
  "type": "vlan",
  "master": "eth0",
  "mtu": 1500,
  "vlanId": 5,
  "linkInContainer": false,
  "ipam": {
      "type": "host-local",
      "subnet": "10.1.1.0/24"
  },
  "dns": {
      "nameservers": [ "10.1.1.1", "8.8.8.8" ]
  }
}

23.2.3.4. IPVLAN 추가 네트워크 구성

다음 오브젝트는 IPVLAN CNI 플러그인의 구성 매개변수를 설명합니다.

표 23.5. IPVLAN CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름: ipvlan.

IPAM

object

IPAM CNI 플러그인에 대한 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다. 플러그인이 연결되어 있지 않으면 이 작업이 필요합니다.

mode

string

선택사항: 가상 네트워크의 작동 모드입니다. 값은 l2, l3 또는 l3s여야 합니다. 기본값은 l2입니다.

master

string

선택 사항: 네트워크 연결과 연결할 이더넷 인터페이스입니다. 마스터를 지정하지 않으면 기본 네트워크 경로에 대한 인터페이스가 사용됩니다.

mtu

integer

선택 사항: 최대 전송 단위(MTU)를 지정된 값으로 설정합니다. 기본값은 커널에 의해 자동으로 설정됩니다.

참고
  • ipvlan 오브젝트에서는 가상 인터페이스가 마스터 인터페이스와 통신할 수 없습니다. 따라서 컨테이너는 ipvlan 인터페이스를 사용하여 호스트에 연결할 수 없습니다. 컨테이너가PTP(Precision Time Protocol)를 지원하는 네트워크와 같이 호스트에 대한 연결을 제공하는 네트워크에 참여하고 있는지 확인합니다.
  • 단일 마스터 인터페이스는 macvlanipvlan 을 둘 다 사용하도록 동시에 구성할 수 없습니다.
  • 인터페이스와 무관할 수 없는 IP 할당 체계의 경우 ipvlan 플러그인은 이 논리를 처리하는 이전 플러그인과 연결할 수 있습니다. 마스터 를 생략한 경우 이전 결과에 슬레이브를 부여하려면 ipvlan 플러그인에 대한 단일 인터페이스 이름이 포함되어야 합니다. ipam 을 생략하면 이전 결과가 ipvlan 인터페이스를 구성하는 데 사용됩니다.
23.2.3.4.1. ipvlan 구성 예

다음 예제는 이름이 ipvlan-net인 추가 네트워크를 구성합니다.

{
  "cniVersion": "0.3.1",
  "name": "ipvlan-net",
  "type": "ipvlan",
  "master": "eth1",
  "mode": "l3",
  "ipam": {
    "type": "static",
    "addresses": [
       {
         "address": "192.168.10.10/24"
       }
    ]
  }
}

23.2.3.5. MACVLAN 추가 네트워크 구성

다음 오브젝트는 macvlan CNI 플러그인의 구성 매개변수를 설명합니다.

표 23.6. MACVLAN CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름입니다. macvlan.

IPAM

object

IPAM CNI 플러그인에 대한 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다.

mode

string

선택 사항: 가상 네트워크에 대한 트래픽 가시성을 구성합니다. bridge, passthru, private 또는 vepa 중 하나여야 합니다. 값을 입력하지 않으면 기본값은 bridge입니다.

master

string

선택 사항: 새로 생성된 macvlan 인터페이스와 연결할 호스트 네트워크 인터페이스입니다. 값을 지정하지 않으면 기본 경로 인터페이스가 사용됩니다.

mtu

string

선택 사항: 지정된 값으로 최대 전송 단위(MTU)입니다. 기본값은 커널에 의해 자동으로 설정됩니다.

참고

플러그인 구성에 대한 마스터 키를 지정하는 경우, 가능한 충돌을 방지하려면 기본 네트워크 플러그인과 연결된 것과 다른 물리적 네트워크 인터페이스를 사용합니다.

23.2.3.5.1. macvlan 구성 예

다음 예제는 이름이 macvlan-net인 추가 네트워크를 구성합니다.

{
  "cniVersion": "0.3.1",
  "name": "macvlan-net",
  "type": "macvlan",
  "master": "eth1",
  "mode": "bridge",
  "ipam": {
    "type": "dhcp"
    }
}

23.2.3.6. OVN-Kubernetes 추가 네트워크의 구성

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

중요

OVN-Kubernetes 추가 네트워크에 대한 구성은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

참고

노드의 OVN-Kubernetes 컨트롤 플레인 에이전트가 연결된 network-attachment-definition CR을 처리할 때까지 Pod 및 다중 네트워크 정책 생성은 보류 중 상태로 유지될 수 있습니다.

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

참고

네트워크 이름은 고유해야 합니다. 예를 들어 동일한 네트워크를 참조하는 다양한 구성으로 여러 NetworkAttachmentDefinition CRD를 생성하는 것은 지원되지 않습니다.

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

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

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

cniVersion

string

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

name

string

네트워크의 이름입니다. 이러한 네트워크는 네임스페이스가 지정되지 않습니다. 예를 들어 두 개의 서로 다른 네임스페이스에 존재하는 두 개의 다른 NetworkAttachmentDefinitions 에서 참조되는 l2-network 라는 네트워크가 있을 수 있습니다. 이렇게 하면 자체 다른 네임스페이스에서 NetworkAttachmentDefinition 을 사용하는 Pod가 동일한 보조 네트워크를 통해 통신할 수 있습니다. 그러나 이러한 두 개의 NetworkAttachmentDefinitions토폴로지,서브넷,mtu, excludeSubnets 와 같은 동일한 네트워크 특정 매개변수도 공유해야 합니다.

type

string

구성할 CNI 플러그인의 이름입니다. 필수 값은 ovn-k8s-cni-overlay 입니다.

토폴로지

string

네트워크의 토폴로지 구성입니다. 필요한 값은 layer2 입니다.

subnets

string

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

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

mtu

string

지정된 값의 최대 전송 단위(MTU)입니다. 기본값 1300 은 커널에 의해 자동으로 설정됩니다.

netAttachDefName

string

메타데이터 네임스페이스 및 이 구성이 포함된 네트워크 연결 정의 오브젝트의 이름입니다. 예를 들어 이 구성이 l2-network 라는 네임스페이스 ns1NetworkAttachmentDefinition 에 정의된 경우 이 구성은 ns1/l2-network 로 설정해야 합니다.

excludeSubnets

string

CIDR 및 IP 쉼표로 구분된 목록입니다. IPS는 할당 가능한 IP 풀에서 제거되며 Pod로 전달되지 않습니다. 생략하면 네트워크를 구현하는 논리 스위치는 계층 2 통신만 제공하며 사용자는 포드에 대한 IP를 구성해야 합니다. 포트 보안은 MAC 스푸핑만 방지합니다.

23.2.3.6.2. 전환 토폴로지 구성

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

참고

계층 2 전환 토폴로지 네트워크는 클러스터 내에서 Pod 간에 데이터 패킷을 전송할 때만 가능합니다.

다음 NetworkAttachmentDefinition CRD(사용자 정의 리소스 정의) YAML은 전환된 보조 네트워크를 구성하는 데 필요한 필드를 설명합니다.

    {
            "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"
    }
23.2.3.6.3. 추가 네트워크의 Pod 구성

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

다음 예제에서는 이 가이드에 표시된 각 연결 구성에 대해 하나씩 두 개의 보조 첨부 파일이 있는 Pod를 프로비저닝합니다.

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
23.2.3.6.4. 고정 IP 주소로 Pod 구성

다음 예제에서는 고정 IP 주소를 사용하여 Pod를 프로비저닝합니다.

참고
  • 계층 2 연결에 대한 Pod의 보조 네트워크 연결의 IP 주소만 지정할 수 있습니다.
  • Pod에 고정 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
1
네트워크의 이름입니다. 이 값은 모든 NetworkAttachmentDefinitions 에서 고유해야 합니다.
2
인터페이스에 할당할 MAC 주소입니다.
3
Pod에 생성할 네트워크 인터페이스의 이름입니다.
4
네트워크 인터페이스에 할당할 IP 주소입니다.

23.2.4. 추가 네트워크의 IP 주소 할당 구성

IP 주소 관리(IPAM) CNI(Container Network Interface) 플러그인은 다른 CNI 플러그인에 대한 IP 주소를 제공합니다.

다음 IP 주소 할당 유형을 사용할 수 있습니다.

  • 정적 할당
  • DHCP 서버를 통한 동적 할당. 지정한 DHCP 서버는 추가 네트워크에서 연결할 수 있어야 합니다.
  • Whereabouts IPAM CNI 플러그인을 통한 동적 할당

23.2.4.1. 고정 IP 주소 할당 구성

다음 표에서는 고정 IP 주소 할당 구성을 설명합니다.

표 23.8. IPAM 정적 구성 오브젝트
필드유형설명

type

string

IPAM 주소 유형입니다. 정적 값이 필요합니다.

addresses

array

가상 인터페이스에 할당할 IP 주소를 지정하는 오브젝트 배열입니다. IPv4 및 IPv6 IP 주소가 모두 지원됩니다.

routes

array

Pod 내부에서 구성할 경로를 지정하는 오브젝트 배열입니다.

dns

array

선택 사항: DNS 구성을 지정하는 오브젝트의 배열입니다.

addresses 어레이에는 다음 필드가 있는 오브젝트가 필요합니다.

표 23.9. ipam.addresses[] array
필드유형설명

address

string

지정하는 IP 주소 및 네트워크 접두사입니다. 예를 들어 10.10.21.10/24를 지정하면 추가 네트워크에 IP 주소 10.10.21.10이 할당되고 넷마스크는 255.255.255.0입니다.

gateway

string

송신 네트워크 트래픽을 라우팅할 기본 게이트웨이입니다.

표 23.10. IPAM.routes[] 배열
필드유형설명

dst

string

CIDR 형식의 IP 주소 범위(예: 기본 경로의 경우 192.168.17.0/24 또는 0.0.0.0/0 )입니다.

gw

string

네트워크 트래픽이 라우팅되는 게이트웨이입니다.

표 23.11. IPAM.dns 오브젝트
필드유형설명

nameservers

array

DNS 쿼리를 보낼 하나 이상의 IP 주소 배열입니다.

domain

array

호스트 이름에 추가할 기본 도메인입니다. 예를 들어 도메인이 example.com으로 설정되면 example-host에 대한 DNS 조회 쿼리가 example-host.example.com으로 다시 작성됩니다.

search

array

DNS 조회 쿼리 중에 규정되지 않은 호스트 이름(예: example-host)에 추가할 도메인 이름 배열입니다.

고정 IP 주소 할당 구성 예

{
  "ipam": {
    "type": "static",
      "addresses": [
        {
          "address": "191.168.1.7/24"
        }
      ]
  }
}

23.2.4.2. DHCP(Dynamic IP 주소) 할당 구성

다음 JSON은 DHCP를 사용한 동적 IP 주소 할당 구성을 설명합니다.

DHCP 리스 갱신

pod는 생성될 때 원래 DHCP 리스를 얻습니다. 리스는 클러스터에서 실행되는 최소 DHCP 서버 배포를 통해 주기적으로 갱신되어야 합니다.

DHCP 서버 배포를 트리거하려면 다음 예와 같이 Cluster Network Operator 구성을 편집하여 shim 네트워크 연결을 만들어야 합니다.

shim 네트워크 연결 정의 예

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  additionalNetworks:
  - name: dhcp-shim
    namespace: default
    type: Raw
    rawCNIConfig: |-
      {
        "name": "dhcp-shim",
        "cniVersion": "0.3.1",
        "type": "bridge",
        "ipam": {
          "type": "dhcp"
        }
      }
  # ...

표 23.12. IPAM DHCP 구성 오브젝트
필드유형설명

type

string

IPAM 주소 유형입니다. dhcp 값이 필요합니다.

DHCP(Dynamic IP 주소) 할당 구성 예

{
  "ipam": {
    "type": "dhcp"
  }
}

23.2.4.3. Whereabouts를 사용한 동적 IP 주소 할당 구성

Whereabouts CNI 플러그인을 사용하면 DHCP 서버를 사용하지 않고도 IP 주소를 추가 네트워크에 동적으로 할당할 수 있습니다.

다음 표에서는 Whereabouts를 사용한 동적 IP 주소 할당 구성을 설명합니다.

표 23.13. IPAM: 구성 오브젝트
필드유형설명

type

string

IPAM 주소 유형입니다. 필요한 경우 값을 가져옵니다 . Gets the value whereabouts.

범위

string

CIDR 표기법의 IP 주소 및 범위입니다. IP 주소는 이 주소 범위 내에서 할당됩니다.

exclude

array

선택 사항: CIDR 표기법의 0개 이상의 IP 주소 및 범위 목록입니다. 제외된 주소 범위 내의 IP 주소는 할당되지 않습니다.

Whereabouts를 사용하는 동적 IP 주소 할당 구성 예

{
  "ipam": {
    "type": "whereabouts",
    "range": "192.0.2.192/27",
    "exclude": [
       "192.0.2.192/30",
       "192.0.2.196/32"
    ]
  }
}

23.2.4.4. Whereabouts-reconciler 데몬 세트 생성

Whereabouts 조정기는 Whereabouts IP Address Management(IPAM) 솔루션을 사용하여 클러스터 내에서 Pod의 동적 IP 주소 할당을 관리합니다. 이렇게 하면 각 pod가 지정된 IP 주소 범위에서 고유한 IP 주소를 가져옵니다. Pod가 삭제되거나 축소될 때 IP 주소 릴리스도 처리합니다.

참고

NetworkAttachmentDefinition CR(사용자 정의 리소스)을 동적 IP 주소 할당에 사용할 수도 있습니다.

Cluster Network Operator를 통해 추가 네트워크를 구성할 때 whereabouts-reconciler 데몬 세트가 자동으로 생성됩니다. YAML 매니페스트에서 추가 네트워크를 구성할 때 자동으로 생성되지 않습니다.

whereabouts-reconciler 데몬 세트의 배포를 트리거하려면 Cluster Network Operator CR(사용자 정의 리소스) 파일을 편집하여 whereabouts-shim 네트워크 연결을 수동으로 생성해야 합니다.

다음 절차에 따라 whereabouts-reconciler 데몬 세트를 배포합니다.

절차

  1. 다음 명령을 실행하여 Network.operator.openshift.io CR(사용자 정의 리소스)을 편집합니다.

    $ oc edit network.operator.openshift.io cluster
  2. 이 예제 YAML 추출에 표시된 additionalNetworks 섹션을 CR(사용자 정의 리소스)의 사양 정의 내에 포함합니다.

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    # ...
    spec:
      additionalNetworks:
      - name: whereabouts-shim
        namespace: default
        rawCNIConfig: |-
          {
           "name": "whereabouts-shim",
           "cniVersion": "0.3.1",
           "type": "bridge",
           "ipam": {
             "type": "whereabouts"
           }
          }
        type: Raw
    # ...
  3. 파일을 저장하고 텍스트 편집기를 종료합니다.
  4. 다음 명령을 실행하여 whereabouts-reconciler 데몬 세트가 성공적으로 배포되었는지 확인합니다.

    $ oc get all -n openshift-multus | grep whereabouts-reconciler

    출력 예

    pod/whereabouts-reconciler-jnp6g 1/1 Running 0 6s
    pod/whereabouts-reconciler-k76gg 1/1 Running 0 6s
    pod/whereabouts-reconciler-k86t9 1/1 Running 0 6s
    pod/whereabouts-reconciler-p4sxw 1/1 Running 0 6s
    pod/whereabouts-reconciler-rvfdv 1/1 Running 0 6s
    pod/whereabouts-reconciler-svzw9 1/1 Running 0 6s
    daemonset.apps/whereabouts-reconciler 6 6 6 6 6 kubernetes.io/os=linux 6s

23.2.4.5. Whereabouts IP 조정기 일정 구성

Whereabouts IPAM CNI 플러그인은 IP 조정기를 매일 실행합니다. 이 프로세스에서는 IP가 소진될 수 있는 모든 진행 중인 IP 할당을 정리하므로 새 Pod가 IP를 할당하지 못하도록 합니다.

IP 조정기가 실행되는 빈도를 변경하려면 다음 절차를 사용하십시오.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • whereabouts-reconciler 데몬 세트를 배포하고 whereabouts-reconciler Pod가 실행 중입니다.

절차

  1. 다음 명령을 실행하여 openshift-multus 네임스페이스에 IP 조정기에 대한 특정 cron 표현식을 사용하여 이름이 whereabouts-config 라는 ConfigMap 오브젝트를 생성합니다.

    $ oc create configmap whereabouts-config -n openshift-multus --from-literal=reconciler_cron_expression="*/15 * * * *"

    이 cron 표현식은 IP 조정기가 15분마다 실행됨을 나타냅니다. 특정 요구 사항에 따라 표현식을 조정합니다.

    참고

    whereabouts-reconciler 데몬 세트는 5개의 별표를 포함하는 cron 표현식 패턴만 사용할 수 있습니다. 초를 나타내는 데 사용되는 여섯 번째 단계는 현재 지원되지 않습니다.

  2. 다음 명령을 실행하여 openshift-multus 네임스페이스 내에서 whereabouts-reconciler 데몬 세트 및 Pod와 관련된 리소스에 대한 정보를 검색합니다.

    $ oc get all -n openshift-multus | grep whereabouts-reconciler

    출력 예

    pod/whereabouts-reconciler-2p7hw                   1/1     Running   0             4m14s
    pod/whereabouts-reconciler-76jk7                   1/1     Running   0             4m14s
    pod/whereabouts-reconciler-94zw6                   1/1     Running   0             4m14s
    pod/whereabouts-reconciler-mfh68                   1/1     Running   0             4m14s
    pod/whereabouts-reconciler-pgshz                   1/1     Running   0             4m14s
    pod/whereabouts-reconciler-xn5xz                   1/1     Running   0             4m14s
    daemonset.apps/whereabouts-reconciler          6         6         6       6            6           kubernetes.io/os=linux   4m16s

  3. 다음 명령을 실행하여 whereabouts-reconciler Pod가 구성된 간격으로 IP 조정기를 실행하는지 확인합니다.

    $ oc -n openshift-multus logs whereabouts-reconciler-2p7hw

    출력 예

    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..2024_02_02_16_33_54.1375928161": CREATE
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..2024_02_02_16_33_54.1375928161": CHMOD
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..data_tmp": RENAME
    2024-02-02T16:33:54Z [verbose] using expression: */15 * * * *
    2024-02-02T16:33:54Z [verbose] configuration updated to file "/cron-schedule/..data". New cron expression: */15 * * * *
    2024-02-02T16:33:54Z [verbose] successfully updated CRON configuration id "00c2d1c9-631d-403f-bb86-73ad104a6817" - new cron expression: */15 * * * *
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/config": CREATE
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..2024_02_02_16_26_17.3874177937": REMOVE
    2024-02-02T16:45:00Z [verbose] starting reconciler run
    2024-02-02T16:45:00Z [debug] NewReconcileLooper - inferred connection data
    2024-02-02T16:45:00Z [debug] listing IP pools
    2024-02-02T16:45:00Z [debug] no IP addresses to cleanup
    2024-02-02T16:45:00Z [verbose] reconciler success

23.2.5. Cluster Network Operator를 사용하여 추가 네트워크 연결 생성

CNO(Cluster Network Operator)는 추가 네트워크 정의를 관리합니다. 생성할 추가 네트워크를 지정하면 CNO가 NetworkAttachmentDefinition 오브젝트를 자동으로 생성합니다.

중요

Cluster Network Operator가 관리하는 NetworkAttachmentDefinition 오브젝트를 편집하지 마십시오. 편집하면 추가 네트워크의 네트워크 트래픽이 중단될 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  1. 선택 사항: 추가 네트워크의 네임스페이스를 생성합니다.

    $ oc create namespace <namespace_name>
  2. CNO 구성을 편집하려면 다음 명령을 입력합니다.

    $ oc edit networks.operator.openshift.io cluster
  3. 다음 예제 CR과 같이 생성할 추가 네트워크의 구성을 추가하여 생성 중인 CR을 수정합니다.

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      # ...
      additionalNetworks:
      - name: tertiary-net
        namespace: namespace2
        type: Raw
        rawCNIConfig: |-
          {
            "cniVersion": "0.3.1",
            "name": "tertiary-net",
            "type": "ipvlan",
            "master": "eth1",
            "mode": "l2",
            "ipam": {
              "type": "static",
              "addresses": [
                {
                  "address": "192.168.1.23/24"
                }
              ]
            }
          }
  4. 변경 사항을 저장하고 텍스트 편집기를 종료하여 변경 사항을 커밋합니다.

검증

  • CNO가 다음 명령을 실행하여 NetworkAttachmentDefinition 오브젝트를 생성했는지 확인합니다. CNO가 오브젝트를 생성하기 전에 지연이 발생할 수 있습니다.

    $ oc get network-attachment-definitions -n <namespace>

    다음과 같습니다.

    <namespace>
    CNO 구성에 추가한 네트워크 연결의 네임스페이스를 지정합니다.

    출력 예

    NAME                 AGE
    test-network-1       14m

23.2.6. YAML 매니페스트를 적용하여 추가 네트워크 연결 생성

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  1. 다음 예와 같이 추가 네트워크 구성으로 YAML 파일을 생성합니다.

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: next-net
    spec:
      config: |-
        {
          "cniVersion": "0.3.1",
          "name": "work-network",
          "type": "host-device",
          "device": "eth1",
          "ipam": {
            "type": "dhcp"
          }
        }
  2. 추가 네트워크를 생성하려면 다음 명령을 입력합니다.

    $ oc apply -f <file>.yaml

    다음과 같습니다.

    <file>
    YAML 매니페스트가 포함된 파일의 이름을 지정합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.