2.7. OVN-Kubernetes 논리 아키텍처
OVN은 네트워크 가상화 솔루션입니다. 논리적 스위치와 라우터를 생성합니다. 이러한 스위치와 라우터는 상호 연결되어 네트워크 토폴로지를 생성합니다. 로그 수준을 2 또는 5로 설정하여 ovnkube-trace를 실행하면 OVN-Kubernetes 논리적 구성 요소가 노출됩니다. 다음 다이어그램은 OpenShift Container Platform에서 라우터와 스위치가 어떻게 연결되는지 보여줍니다.
그림 2.2. OVN-Kubernetes 라우터 및 스위치 구성 요소
패킷 처리에 관련된 주요 구성 요소는 다음과 같습니다.
- 게이트웨이 라우터
-
게이트웨이 라우터는 때때로 L3 게이트웨이 라우터라고도 불리며, 일반적으로 분산 라우터와 물리적 네트워크 사이에서 사용됩니다. 논리적 패치 포트를 포함한 게이트웨이 라우터는 물리적 위치(분산되지 않음) 또는 섀시에 바인딩됩니다. 이 라우터의 패치 포트는 ovn-southbound 데이터베이스(
ovn-sbdb)에서 l3gateway 포트로 알려져 있습니다. - 분산 논리 라우터
- 가상 머신과 컨테이너가 연결되는 분산된 논리적 라우터와 그 뒤에 있는 논리적 스위치는 각 하이퍼바이저에 효과적으로 상주합니다.
- 로컬 스위치에 가입하세요
- 로컬 스위치는 분산 라우터와 게이트웨이 라우터를 연결하는 데 사용됩니다. 분산 라우터에 필요한 IP 주소 수가 줄어듭니다.
- 패치 포트가 있는 논리 스위치
- 패치 포트가 있는 논리적 스위치는 네트워크 스택을 가상화하는 데 사용됩니다. 그들은 터널을 통해 원격 논리 포트를 연결합니다.
- 로컬넷 포트가 있는 논리 스위치
- 로컬넷 포트가 있는 논리적 스위치는 OVN을 물리적 네트워크에 연결하는 데 사용됩니다. 로컬넷 포트를 사용하여 패킷을 직접 연결된 물리적 L2 세그먼트에 브리징하여 원격 논리 포트를 연결합니다.
- 패치 포트
- 패치 포트는 논리적 스위치와 논리적 라우터 간, 그리고 피어 논리적 라우터 간의 연결을 나타냅니다. 단일 연결에는 각 연결 지점에 패치 포트 한 쌍이 있으며, 각 측면에 하나씩 있습니다.
- l3게이트웨이 포트
-
l3gateway 포트는 게이트웨이 라우터에서 사용되는 논리적 패치 포트에 대한
ovn-sbdb의 포트 바인딩 항목입니다. 이러한 포트는 게이트웨이 라우터 자체와 마찬가지로 섀시에 바인딩되어 있다는 사실을 나타내기 위해 패치 포트가 아닌 l3gateway 포트라고 불립니다. - 로컬넷 포트
-
localnet 포트는 각
ovn-controller인스턴스에서 로컬로 접근 가능한 네트워크에 연결할 수 있도록 하는 브리지 논리 스위치에 있습니다. 이는 논리적 스위치에서 물리적 네트워크로의 직접 연결을 모델링하는 데 도움이 됩니다. 논리적 스위치에는 하나의 로컬넷 포트만 연결할 수 있습니다.
2.7.1. 로컬 호스트에 네트워크 도구 설치 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 클러스터 네트워크 문제를 디버깅하는 데 사용할 수 있는 도구 모음을 만들려면 로컬 호스트에 network-tools를 설치하세요.
프로세스
다음 명령을 사용하여
network-tools저장소를 워크스테이션에 복제합니다.$ git clone git@github.com:openshift/network-tools.git방금 복제한 저장소의 디렉토리로 변경하세요.
$ cd network-tools선택 사항: 사용 가능한 모든 명령을 나열합니다.
$ ./debug-scripts/network-tools -h
2.7.2. 네트워크 도구 실행 링크 복사링크가 클립보드에 복사되었습니다!
network-tools를 실행하여 논리적 스위치와 라우터에 대한 정보를 얻습니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
클러스터 관리자권한이 있는 사용자로 클러스터에 로그인했습니다. -
로컬 호스트에
네트워크 도구를설치했습니다.
프로세스
다음 명령을 실행하여 라우터를 나열하세요.
$ ./debug-scripts/network-tools ovn-db-run-command ovn-nbctl lr-list출력 예
944a7b53-7948-4ad2-a494-82b55eeccf87 (GR_ci-ln-54932yb-72292-kd676-worker-c-rzj99) 84bd4a4c-4b0b-4a47-b0cf-a2c32709fc53 (ovn_cluster_router)다음 명령을 실행하여 localnet 포트를 나열하세요.
$ ./debug-scripts/network-tools ovn-db-run-command \ ovn-sbctl find Port_Binding type=localnet출력 예
_uuid : d05298f5-805b-4838-9224-1211afc2f199 additional_chassis : [] additional_encap : [] chassis : [] datapath : f3c2c959-743b-4037-854d-26627902597c encap : [] external_ids : {} gateway_chassis : [] ha_chassis_group : [] logical_port : br-ex_ci-ln-54932yb-72292-kd676-worker-c-rzj99 mac : [unknown] mirror_rules : [] nat_addresses : [] options : {network_name=physnet} parent_port : [] port_security : [] requested_additional_chassis: [] requested_chassis : [] tag : [] tunnel_key : 2 type : localnet up : false virtual_parent : [] [...]다음 명령을 실행하여
l3gateway포트를 나열하세요.$ ./debug-scripts/network-tools ovn-db-run-command \ ovn-sbctl find Port_Binding type=l3gateway출력 예
_uuid : 5207a1f3-1cf3-42f1-83e9-387bbb06b03c additional_chassis : [] additional_encap : [] chassis : ca6eb600-3a10-4372-a83e-e0d957c4cd92 datapath : f3c2c959-743b-4037-854d-26627902597c encap : [] external_ids : {} gateway_chassis : [] ha_chassis_group : [] logical_port : etor-GR_ci-ln-54932yb-72292-kd676-worker-c-rzj99 mac : ["42:01:0a:00:80:04"] mirror_rules : [] nat_addresses : ["42:01:0a:00:80:04 10.0.128.4"] options : {l3gateway-chassis="84737c36-b383-4c83-92c5-2bd5b3c7e772", peer=rtoe-GR_ci-ln-54932yb-72292-kd676-worker-c-rzj99} parent_port : [] port_security : [] requested_additional_chassis: [] requested_chassis : [] tag : [] tunnel_key : 1 type : l3gateway up : true virtual_parent : [] _uuid : 6088d647-84f2-43f2-b53f-c9d379042679 additional_chassis : [] additional_encap : [] chassis : ca6eb600-3a10-4372-a83e-e0d957c4cd92 datapath : dc9cea00-d94a-41b8-bdb0-89d42d13aa2e encap : [] external_ids : {} gateway_chassis : [] ha_chassis_group : [] logical_port : jtor-GR_ci-ln-54932yb-72292-kd676-worker-c-rzj99 mac : [router] mirror_rules : [] nat_addresses : [] options : {l3gateway-chassis="84737c36-b383-4c83-92c5-2bd5b3c7e772", peer=rtoj-GR_ci-ln-54932yb-72292-kd676-worker-c-rzj99} parent_port : [] port_security : [] requested_additional_chassis: [] requested_chassis : [] tag : [] tunnel_key : 2 type : l3gateway up : true virtual_parent : [] [...]다음 명령을 실행하여 패치 포트를 나열하세요.
$ ./debug-scripts/network-tools ovn-db-run-command \ ovn-sbctl find Port_Binding type=patch출력 예
_uuid : 785fb8b6-ee5a-4792-a415-5b1cb855dac2 additional_chassis : [] additional_encap : [] chassis : [] datapath : f1ddd1cc-dc0d-43b4-90ca-12651305acec encap : [] external_ids : {} gateway_chassis : [] ha_chassis_group : [] logical_port : stor-ci-ln-54932yb-72292-kd676-worker-c-rzj99 mac : [router] mirror_rules : [] nat_addresses : ["0a:58:0a:80:02:01 10.128.2.1 is_chassis_resident(\"cr-rtos-ci-ln-54932yb-72292-kd676-worker-c-rzj99\")"] options : {peer=rtos-ci-ln-54932yb-72292-kd676-worker-c-rzj99} parent_port : [] port_security : [] requested_additional_chassis: [] requested_chassis : [] tag : [] tunnel_key : 1 type : patch up : false virtual_parent : [] _uuid : c01ff587-21a5-40b4-8244-4cd0425e5d9a additional_chassis : [] additional_encap : [] chassis : [] datapath : f6795586-bf92-4f84-9222-efe4ac6a7734 encap : [] external_ids : {} gateway_chassis : [] ha_chassis_group : [] logical_port : rtoj-ovn_cluster_router mac : ["0a:58:64:40:00:01 100.64.0.1/16"] mirror_rules : [] nat_addresses : [] options : {peer=jtor-ovn_cluster_router} parent_port : [] port_security : [] requested_additional_chassis: [] requested_chassis : [] tag : [] tunnel_key : 1 type : patch up : false virtual_parent : [] [...]