3.7. 서브넷 간 통신 설정
일반적인 OpenShift Container Platform 클러스터 설정에서 컨트롤 플레인 및 컴퓨팅 노드를 포함한 모든 노드는 동일한 네트워크에 있습니다. 그러나 엣지 컴퓨팅 시나리오에서는 컴퓨팅 노드를 에지에 더 가깝게 찾는 것이 유용할 수 있습니다. 이는 컨트롤 플레인 및 로컬 컴퓨팅 노드에서 사용하는 서브넷과 원격 노드에 대해 다른 네트워크 세그먼트 또는 서브넷을 사용하는 경우가 많습니다. 이러한 설정을 사용하면 엣지의 대기 시간을 줄이고 확장성을 향상시킬 수 있습니다.
OpenShift Container Platform을 설치하기 전에 원격 노드가 포함된 에지 서브넷이 컨트롤 플레인 노드가 포함된 서브넷에 도달하고 컨트롤 플레인에서 트래픽을 수신할 수 있도록 네트워크를 적절히 구성해야 합니다.
클러스터 설치 중에 install-config.yaml 구성 파일의 네트워크 구성의 노드에 영구 IP 주소를 할당합니다. 이 작업을 수행하지 않으면 트래픽이 노드에 도달하는 방법에 영향을 줄 수 있는 임시 IP 주소가 노드에 할당될 수 있습니다. 예를 들어 노드에 임시 IP 주소가 할당되어 노드에 본딩된 인터페이스를 구성한 경우 본딩된 인터페이스에서 다른 IP 주소를 수신할 수 있습니다.
기본 로드 밸런서 대신 사용자 관리 로드 밸런서를 구성하여 동일한 서브넷 또는 여러 서브넷에서 컨트롤 플레인 노드를 실행할 수 있습니다. 여러 서브넷 환경을 사용하면 하드웨어 장애 또는 네트워크 중단으로 인해 OpenShift Container Platform 클러스터의 위험을 줄일 수 있습니다. 자세한 내용은 "사용자 관리 로드 밸런서의 서비스" 및 "사용자 관리 로드 밸런서 구성"을 참조하십시오.
여러 서브넷 환경에서 컨트롤 플레인 노드를 실행하려면 다음 주요 작업을 완료해야 합니다.
-
install-config.yaml파일의loadBalancer.type매개변수에UserManaged를 지정하여 기본 로드 밸런서 대신 사용자 관리 로드 밸런서를 구성합니다. -
install-config.yaml파일의ingressVIPs및apiVIPs매개변수에서 사용자 관리 로드 밸런서 주소를 구성합니다. -
install-config.yaml파일의networking.machineNetworks매개변수에 여러 서브넷 CIDR(Classless Inter-Domain Routing) 및 사용자 관리 로드 밸런서 IP 주소를 추가합니다.
여러 서브넷이 있는 클러스터를 배포하려면 redfish-virtualmedia 및 idrac-virtualmedia 와 같은 가상 미디어를 사용해야 합니다.
이 절차에서는 두 번째 서브넷의 원격 컴퓨팅 노드가 첫 번째 서브넷의 컨트롤 플레인 노드와 효과적으로 통신하고 첫 번째 서브넷의 컨트롤 플레인 노드가 두 번째 서브넷의 원격 컴퓨팅 노드와 효과적으로 통신할 수 있도록 하는 데 필요한 네트워크 구성에 대해 자세히 설명합니다.
이 절차에서 클러스터는 두 개의 서브넷에 걸쳐 있습니다.
-
첫 번째 서브넷(
10.0.0.0)에는 컨트롤 플레인 및 로컬 컴퓨팅 노드가 포함되어 있습니다. -
두 번째 서브넷(
192.168.0.0)에는 엣지 컴퓨팅 노드가 포함되어 있습니다.
프로세스
두 번째 서브넷과 통신하도록 첫 번째 서브넷을 구성합니다.
다음 명령을 실행하여
root로 컨트롤 플레인 노드에 로그인합니다.$ sudo su -다음 명령을 실행하여 네트워크 인터페이스의 이름을 가져옵니다.
# nmcli dev status다음 명령을 실행하여 게이트웨이를 통해 두 번째 서브넷(
192.168.0.0)에 경로를 추가합니다.# nmcli connection modify <interface_name> +ipv4.routes "192.168.0.0/24 via <gateway>"<
;interface_name>을 인터페이스 이름으로 바꿉니다. 을 실제 게이트웨이의 IP 주소로 바꿉니다.예제
# nmcli connection modify eth0 +ipv4.routes "192.168.0.0/24 via 192.168.0.1"다음 명령을 실행하여 변경 사항을 적용합니다.
# nmcli connection up <interface_name><
;interface_name>을 인터페이스 이름으로 바꿉니다.라우팅 테이블을 확인하여 경로가 성공적으로 추가되었는지 확인합니다.
# ip route첫 번째 서브넷의 각 컨트롤 플레인 노드에 대해 이전 단계를 반복합니다.
참고실제 인터페이스 이름 및 게이트웨이와 일치하도록 명령을 조정합니다.
첫 번째 서브넷과 통신하도록 두 번째 서브넷을 구성합니다.
다음 명령을 실행하여
root로 원격 컴퓨팅 노드에 로그인합니다.$ sudo su -다음 명령을 실행하여 네트워크 인터페이스의 이름을 가져옵니다.
# nmcli dev status다음 명령을 실행하여 게이트웨이를 통해 첫 번째 서브넷(
10.0.0.0)에 경로를 추가합니다.# nmcli connection modify <interface_name> +ipv4.routes "10.0.0.0/24 via <gateway>"<
;interface_name>을 인터페이스 이름으로 바꿉니다. 을 실제 게이트웨이의 IP 주소로 바꿉니다.예제
# nmcli connection modify eth0 +ipv4.routes "10.0.0.0/24 via 10.0.0.1"다음 명령을 실행하여 변경 사항을 적용합니다.
# nmcli connection up <interface_name><
;interface_name>을 인터페이스 이름으로 바꿉니다.다음 명령을 실행하여 라우팅 테이블을 확인하여 경로가 성공적으로 추가되었는지 확인합니다.
# ip route두 번째 서브넷의 각 compute 노드에 대해 이전 단계를 반복합니다.
참고실제 인터페이스 이름 및 게이트웨이와 일치하도록 명령을 조정합니다.
네트워크를 구성한 후 연결을 테스트하여 원격 노드가 컨트롤 플레인 노드에 도달할 수 있고 컨트롤 플레인 노드가 원격 노드에 도달할 수 있는지 확인합니다.
첫 번째 서브넷의 컨트롤 플레인 노드에서 다음 명령을 실행하여 두 번째 서브넷의 원격 노드를 ping합니다.
$ ping <remote_node_ip_address>ping에 성공하면 첫 번째 서브넷의 컨트롤 플레인 노드가 두 번째 서브넷의 원격 노드에 연결할 수 있습니다. 응답이 수신되지 않으면 네트워크 구성을 검토하고 노드에 대한 절차를 반복합니다.
두 번째 서브넷의 원격 노드에서 다음 명령을 실행하여 첫 번째 서브넷의 컨트롤 플레인 노드를 ping합니다.
$ ping <control_plane_node_ip_address>ping에 성공하면 두 번째 서브넷의 원격 컴퓨팅 노드가 첫 번째 서브넷의 컨트롤 플레인에 도달할 수 있습니다. 응답이 수신되지 않으면 네트워크 구성을 검토하고 노드에 대한 절차를 반복합니다.