5.2.3. 노드에서 설계
노드에서 OpenShift SDN은 먼저 마스터가 노드에 서브넷을 할당하도록 앞에서 설명한 레지스트리에서 SDN 마스터에 로컬 호스트를 등록합니다.
그런 다음 OpenShift SDN은 세 개의 네트워크 장치를 만들고 구성합니다.
-
br0
: 포드 컨테이너가 연결될 OVS 브리지 장치입니다. OpenShift SDN은 이 브리지에서 서브넷이 아닌 흐름 규칙 집합도 구성합니다. -
tun0
: OVS 내부 포트(br0의
포트 2). 이 네트워크에는 클러스터 서브넷 게이트웨이 주소가 할당되며 외부 네트워크 액세스에 사용됩니다. OpenShift SDN에서는 NAT를 통해 클러스터 서브넷에서 외부 네트워크로 액세스할 수 있도록 netfilter 및 라우팅 규칙을 구성합니다. -
vxlan_sys_4789
: 원격 노드의 컨테이너에 대한 액세스를 제공하는 OVS VXLAN 장치(br0
의 포트 1)입니다. OVS 규칙에서vxlan0
을 참조합니다.
호스트에서 포드를 시작할 때마다 OpenShift SDN은 다음과 같습니다.
- Pod에 노드의 클러스터 서브넷에서 사용 가능한 IP 주소를 할당합니다.
-
포드 veth 인터페이스 쌍의 호스트 측면을 OVS 브리지
br0
에 연결합니다. - OpenFlow 규칙을 OVS 데이터베이스에 추가하여 새 포드로 주소가 지정된 트래픽을 올바른 OVS 포트로 라우팅합니다.
- ovs-multitenant 플러그인의 경우 OpenFlow 규칙을 추가하여 포드에서 들어오는 트래픽을 포드의 VNID로 태그하고 트래픽의 VNID가 Pod의 VNID(또는 권한 있는 VNID 0)와 일치하는 경우 Pod로 트래픽을 허용합니다. 일치하지 않는 트래픽은 일반 규칙에 따라 필터링됩니다.
OpenShift SDN 노드는 SDN 마스터의 서브넷 업데이트도 감시합니다. 새 서브넷이 추가되면 노드는 br0
에 OpenFlow 규칙을 추가하여 원격 서브넷의 대상 IP 주소가 있는 패킷이 vxlan0
(br 0
의 포트 1)으로 이동하므로 네트워크로 나갑니다. ovs-subnet 플러그인은 VNID 0을 사용하여 VXLAN의 모든 패킷을 전송하지만 ovs-multitenant 플러그인은 소스 컨테이너에 적절한 VNID를 사용합니다.