13.9. VRF에 보조 네트워크 할당
13.9.1. VRF에 보조 네트워크 할당
클러스터 관리자는 CNI VRF 플러그인을 사용하여 VRF 도메인에 대한 추가 네트워크를 구성할 수 있습니다. 이 플러그인으로 생성된 가상 네트워크는 지정한 물리적 인터페이스와 연결됩니다.
VRF를 사용하는 애플리케이션은 특정 장치에 바인딩해야 합니다. 일반적인 사용은 소켓에 SO_BINDTODEVICE
옵션을 사용하는 것입니다. SO_BINDTODEVICE
는 소켓을 전달된 인터페이스 이름(예: eth1
)에 지정된 장치에 바인딩합니다. SO_BINDTODEVICE
를 사용하려면 애플리케이션에 CAP_NET_RAW
기능이 있어야 합니다.
OpenShift Container Platform Pod에서는 ip vrf exec
명령을 통해 VRF를 사용할 수 없습니다. VRF를 사용하려면 애플리케이션을 VRF 인터페이스에 직접 바인딩합니다.
13.9.1.1. CNI VRF 플러그인으로 추가 네트워크 연결 생성
CNO(Cluster Network Operator)는 추가 네트워크 정의를 관리합니다. 생성할 추가 네트워크를 지정하면 CNO가 NetworkAttachmentDefinition
CR(사용자 정의 리소스)을 자동으로 생성합니다.
CNO가 관리하는 NetworkAttachmentDefinition
CR을 편집하지 마십시오. 편집하면 추가 네트워크의 네트워크 트래픽이 중단될 수 있습니다.
CNI VRF 플러그인으로 추가 네트워크 연결을 생성하려면 다음 절차를 수행하십시오.
사전 요구 사항
- OpenShift Container Platform CLI, oc를 설치합니다.
- cluster-admin 권한이 있는 사용자로 OpenShift 클러스터에 로그인합니다.
절차
추가
Network
연결에 사용할 네트워크 CR(사용자 정의 리소스)을 생성하고 다음 예제 CR과 같이 추가 네트워크의rawCNIConfig
구성을 삽입합니다. YAML을additional-network-attachment.yaml
파일로 저장합니다.apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: additionalNetworks: - name: test-network-1 namespace: additional-network-1 type: Raw rawCNIConfig: '{ "cniVersion": "0.3.1", "name": "macvlan-vrf", "plugins": [ 1 { "type": "macvlan", 2 "master": "eth1", "ipam": { "type": "static", "addresses": [ { "address": "191.168.1.23/24" } ] } }, { "type": "vrf", "vrfname": "example-vrf-name", 3 "table": 1001 4 }] }'
참고VRF는 리소스의 유형이
netdevice
인 경우에만 올바르게 작동합니다.Network
리소스를 생성합니다.$ oc create -f additional-network-attachment.yaml
CNO가 다음 명령을 실행하여
NetworkAttachmentDefinition
CR을 생성했는지 확인합니다.<namespace>
를 네트워크 연결을 구성할 때 지정한 네임스페이스(예:additional-network-1
)로 바꿉니다.$ oc get network-attachment-definitions -n <namespace>
출력 예
NAME AGE additional-network-1 14m
참고CNO가 CR을 생성하기 전에 지연이 발생할 수 있습니다.
추가 VRF 네트워크 연결에 성공했는지 확인
VRF CNI가 올바르게 구성되어 추가 네트워크 연결이 연결되었는지 확인하려면 다음을 수행하십시오.
- VRF CNI를 사용하는 네트워크를 생성합니다.
- 포드에 네트워크를 할당합니다.
포드 네트워크 연결이 VRF 추가 네트워크에 연결되어 있는지 확인합니다. Pod로 원격 쉘을 설치하고 다음 명령을 실행합니다.
$ ip vrf show
출력 예
Name Table ----------------------- red 10
VRF 인터페이스가 보조 인터페이스의 마스터인지 확인합니다.
$ ip link
출력 예
5: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP mode