19.2. 추가 네트워크 구성
클러스터 관리자는 클러스터에 대한 추가 네트워크를 구성할 수 있습니다. 다음과 같은 네트워크 유형이 지원됩니다.
19.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 플러그인을 연결할 수 있습니다.
19.2.2. 추가 네트워크 연결을 위한 구성
추가 네트워크는 k8s.cni.cncf.io
API 그룹의 NetworkAttachmentDefinition
API를 통해 구성됩니다.
이 정보가 프로젝트 관리 사용자가 액세스할 수 있으므로 중요한 정보 또는 시크릿을 NetworkAttachmentDefinition
오브젝트에 저장하지 마십시오.
API의 구성은 다음 표에 설명되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
| 추가 네트워크의 이름입니다. |
|
| 오브젝트와 연결된 네임스페이스입니다. |
|
| JSON 형식의 CNI 플러그인 구성입니다. |
19.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
19.2.2.2. YAML 매니페스트에서 추가 네트워크 구성
추가 네트워크의 구성은 다음 예와 같이 YAML 구성 파일에서 지정됩니다.
apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: <name> 1 spec: config: |- 2 { ... }
19.2.3. 추가 네트워크 유형의 구성
추가 네트워크의 특정 구성 필드는 다음 섹션에 설명되어 있습니다.
19.2.3.1. 브리지 추가 네트워크에 대한 구성
다음 오브젝트는 브릿지 CNI 플러그인의 구성 매개변수를 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
CNI 사양 버전입니다. |
|
|
CNO 구성에 대해 이전에 입력한 |
|
| |
|
|
사용할 가상 브릿지의 이름을 지정합니다. 브릿지 인터페이스가 호스트에 없으면 생성됩니다. 기본값은 |
|
| IPAM CNI 플러그인에 대한 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다. |
|
|
가상 네트워크에서 전송되는 트래픽에 IP 마스커레이딩을 사용하려면 |
|
|
브리지에 IP 주소를 할당하려면 |
|
|
브릿지를 가상 네트워크의 기본 게이트웨이로 구성하려면 |
|
|
이전에 할당된 IP 주소를 가상 브리지에 할당할 수 있도록 하려면 |
|
|
가상 브릿지가 수신한 가상 포트를 통해 이더넷 프레임을 다시 보낼 수 있도록 하려면 |
|
|
브릿지에서 무차별 모드를 사용하려면 |
|
| VLAN(가상 LAN) 태그를 정수 값으로 지정합니다. 기본적으로 VLAN 태그는 할당되지 않습니다. |
|
| 최대 전송 단위(MTU)를 지정된 값으로 설정합니다. 기본값은 커널에 의해 자동으로 설정됩니다. |
19.2.3.1.1. 브릿지 구성 예
다음 예제는 이름이 bridge-net
인 추가 네트워크를 구성합니다.
{ "cniVersion": "0.3.1", "name": "work-network", "type": "bridge", "isGateway": true, "vlan": 2, "ipam": { "type": "dhcp" } }
19.2.3.2. 호스트 장치 추가 네트워크에 대한 구성
device
, hwaddr
, kernelpath
또는 pciBusID
매개변수 중 하나만 설정하여 네트워크 장치를 지정합니다.
다음 오브젝트는 호스트 장치 CNI 플러그인의 구성 매개변수를 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
CNI 사양 버전입니다. |
|
|
CNO 구성에 대해 이전에 입력한 |
|
|
구성할 CNI 플러그인의 이름: |
|
|
선택사항: 장치 이름(예: |
|
| 선택사항: 장치 하드웨어 MAC 주소입니다. |
|
|
선택 사항: |
|
|
선택 사항: 네트워크 장치의 PCI 주소입니다(예: |
19.2.3.2.1. 호스트 장치 구성 예
다음 예제는 이름이 hostdev-net
인 추가 네트워크를 구성합니다.
{ "cniVersion": "0.3.1", "name": "work-network", "type": "host-device", "device": "eth1" }
19.2.3.3. IPVLAN 추가 네트워크를 위한 구성
다음 오브젝트는 IPVLAN CNI 플러그인의 구성 매개변수를 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
CNI 사양 버전입니다. |
|
|
CNO 구성에 대해 이전에 입력한 |
|
|
구성할 CNI 플러그인의 이름: |
|
|
가상 네트워크의 운영 모드입니다. 값은 |
|
|
네트워크 연결과 연결할 이더넷 인터페이스입니다. |
|
| 최대 전송 단위(MTU)를 지정된 값으로 설정합니다. 기본값은 커널에 의해 자동으로 설정됩니다. |
|
| IPAM CNI 플러그인에 대한 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다.
|
19.2.3.3.1. ipvlan 구성 예
다음 예제는 이름이 ipvlan-net
인 추가 네트워크를 구성합니다.
{ "cniVersion": "0.3.1", "name": "work-network", "type": "ipvlan", "master": "eth1", "mode": "l3", "ipam": { "type": "static", "addresses": [ { "address": "192.168.10.10/24" } ] } }
19.2.3.4. MACVLAN 추가 네트워크 구성
다음 오브젝트는 macvlan CNI 플러그인의 구성 매개변수를 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
CNI 사양 버전입니다. |
|
|
CNO 구성에 대해 이전에 입력한 |
|
|
구성할 CNI 플러그인의 이름입니다. |
|
|
가상 네트워크에서 트래픽 가시성을 구성합니다. |
|
| 새로 생성된 macvlan 인터페이스와 연결할 호스트 네트워크 인터페이스입니다. 값을 지정하지 않으면 기본 경로 인터페이스가 사용됩니다. |
|
| 지정된 값에 대한 최대 전송 단위(MTU)입니다. 기본값은 커널에 의해 자동으로 설정됩니다. |
|
| IPAM CNI 플러그인에 대한 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다. |
플러그인 구성에 대한 마스터
키를 지정하는 경우, 가능한 충돌을 방지하려면 기본 네트워크 플러그인과 연결된 것과 다른 물리적 네트워크 인터페이스를 사용합니다.
19.2.3.4.1. macvlan 구성 예
다음 예제는 이름이 macvlan-net
인 추가 네트워크를 구성합니다.
{ "cniVersion": "0.3.1", "name": "macvlan-net", "type": "macvlan", "master": "eth1", "mode": "bridge", "ipam": { "type": "dhcp" } }
19.2.4. 추가 네트워크에 대한 IP 주소 할당 구성
IP 주소 관리(IPAM) CNI(Container Network Interface) 플러그인은 다른 CNI 플러그인에 대한 IP 주소를 제공합니다.
다음 IP 주소 할당 유형을 사용할 수 있습니다.
- 정적 할당
- DHCP 서버를 통한 동적 할당. 지정한 DHCP 서버는 추가 네트워크에서 연결할 수 있어야 합니다.
- Whereabouts IPAM CNI 플러그인을 통한 동적 할당
19.2.4.1. 고정 IP 주소 할당 구성
다음 표에서는 고정 IP 주소 할당 구성에 대해 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
IPAM 주소 유형입니다. |
|
| 가상 인터페이스에 할당할 IP 주소를 지정하는 개체의 배열입니다. IPv4 및 IPv6 IP 주소가 모두 지원됩니다. |
|
| Pod 내부에서 구성할 경로를 지정하는 오브젝트의 배열입니다. |
|
| 선택 사항: DNS 구성을 지정하는 오브젝트의 배열입니다. |
addresses
배열에는 다음 필드가 있는 오브젝트가 필요합니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
지정하는 IP 주소 및 네트워크 접두사입니다. 예를 들어 |
|
| 송신 네트워크 트래픽을 라우팅할 기본 게이트웨이입니다. |
필드 | 유형 | 설명 |
---|---|---|
|
|
CIDR 형식의 IP 주소 범위(예: 기본 경로의 경우 |
|
| 네트워크 트래픽이 라우팅되는 게이트웨이입니다. |
필드 | 유형 | 설명 |
---|---|---|
|
| DNS 쿼리를 보낼 하나 이상의 IP 주소로 구성된 배열입니다. |
|
|
호스트 이름에 추가할 기본 도메인입니다. 예를 들어 도메인이 |
|
|
DNS 조회 쿼리 중에 규정되지 않은 호스트 이름(예: |
고정 IP 주소 할당 구성 예
{ "ipam": { "type": "static", "addresses": [ { "address": "191.168.1.7/24" } ] } }
19.2.4.2. DHCP(Dynamic IP 주소) 할당 구성
다음 JSON은 DHCP를 사용한 동적 IP 주소 할당 구성을 설명합니다.
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" } } # ...
필드 | 유형 | 설명 |
---|---|---|
|
|
IPAM 주소 유형입니다. 값 |
DHCP(Dynamic IP 주소) 할당 구성 예
{ "ipam": { "type": "dhcp" } }
19.2.4.3. Whereabouts를 사용한 동적 IP 주소 할당 구성
Whereabouts CNI 플러그인을 사용하면 DHCP 서버를 사용하지 않고도 IP 주소를 추가 네트워크에 동적으로 할당할 수 있습니다.
다음 표에서는 Whereabouts를 사용한 동적 IP 주소 할당 구성을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
IPAM 주소 유형입니다. 값 |
|
| CIDR 표기법의 IP 주소 및 범위입니다. IP 주소는 이 주소 범위 내에서 할당됩니다. |
|
| 선택 사항: 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" ] } }
19.2.5. Cluster Network Operator를 사용하여 추가 네트워크 연결 생성
CNO(Cluster Network Operator)는 추가 네트워크 정의를 관리합니다. 생성할 추가 네트워크를 지정하면 CNO가 NetworkAttachmentDefinition
오브젝트를 자동으로 생성합니다.
Cluster Network Operator가 관리하는 NetworkAttachmentDefinition
오브젝트를 편집하지 마십시오. 편집하면 추가 네트워크의 네트워크 트래픽이 중단될 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
절차
선택 사항: 추가 네트워크의 네임스페이스를 생성합니다.
$ oc create namespace <namespace_name>
CNO 구성을 편집하려면 다음 명령을 입력합니다.
$ oc edit networks.operator.openshift.io cluster
다음 예제 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" } ] } }
- 변경 사항을 저장하고 텍스트 편집기를 종료하여 변경 사항을 커밋합니다.
검증
CNO가 다음 명령을 실행하여
NetworkAttachmentDefinition
오브젝트를 생성했는지 확인합니다. CNO가 오브젝트를 생성하기 전에 지연이 발생할 수 있습니다.$ oc get network-attachment-definitions -n <namespace>
다음과 같습니다.
<namespace>
- CNO 구성에 추가한 네트워크 연결의 네임스페이스를 지정합니다.
출력 예
NAME AGE test-network-1 14m
19.2.6. YAML 매니페스트를 적용하여 추가 네트워크 연결 생성
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
절차
다음 예와 같이 추가 네트워크 구성을 사용하여 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" } }
추가 네트워크를 생성하려면 다음 명령을 입력합니다.
$ oc apply -f <file>.yaml
다음과 같습니다.
<file>
- YAML 매니페스트가 포함된 파일의 이름을 지정합니다.