This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.15.12.3. 리디렉션 모드에서 송신 라우터 Pod 배포
송신 라우터 포드를 배포하여 자체 예약된 소스 IP 주소에서 하나 이상의 대상 IP 주소로 트래픽을 리디렉션할 수 있습니다.
송신 라우터 포드를 추가한 후 예약된 소스 IP 주소를 사용해야 하는 클라이언트 포드는 대상 IP에 직접 연결하는 대신 송신 라우터에 연결하도록 수정해야 합니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin권한이 있는 사용자로 로그인합니다.
프로세스
- 네트워크 연결 정의를 생성합니다.
- 송신 라우터 Pod를 생성합니다.
다른 포드에서 송신 라우터 포드의 IP 주소를 찾을 수 있도록 하려면 다음 예제와 같이 송신 라우터 포드를 사용하는 서비스를 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스를 생성한 후 포드가 서비스에 연결할 수 있습니다. 송신 라우터 포드는 대상 IP 주소의 해당 포트에 대한 연결을 리디렉션합니다. 이 연결은 예약된 소스 IP 주소에서 시작됩니다.
검증
송신 라우터 포드가 시작하고 보조 네트워크 인터페이스가 있는지 확인하려면 다음 절차를 완료합니다.
송신 라우터 포드에 대한 이벤트를 봅니다.
oc get events --field-selector involvedObject.name=egress-router-pod
$ oc get events --field-selector involvedObject.name=egress-router-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow 포드가 네트워크 연결 정의를 참조하는 경우, 이전 명령은 다음과 유사한 출력을 반환합니다.
출력 예
LAST SEEN TYPE REASON OBJECT MESSAGE 5m4s Normal Scheduled pod/egress-router-pod Successfully assigned default/egress-router-pod to ci-ln-9x2bnsk-f76d1-j2v6g-worker-c-24g65 5m3s Normal AddedInterface pod/egress-router-pod Add eth0 [10.129.2.31/23] 5m3s Normal AddedInterface pod/egress-router-pod Add net1 [192.168.12.99/24] from default/egress-router-redirect
LAST SEEN TYPE REASON OBJECT MESSAGE 5m4s Normal Scheduled pod/egress-router-pod Successfully assigned default/egress-router-pod to ci-ln-9x2bnsk-f76d1-j2v6g-worker-c-24g65 5m3s Normal AddedInterface pod/egress-router-pod Add eth0 [10.129.2.31/23] 5m3s Normal AddedInterface pod/egress-router-pod Add net1 [192.168.12.99/24] from default/egress-router-redirectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 송신 라우터 포드의 라우팅 테이블을 확인합니다.
송신 라우터 pod에 대한 노드 이름을 가져옵니다.
POD_NODENAME=$(oc get pod egress-router-pod -o jsonpath="{.spec.nodeName}")$ POD_NODENAME=$(oc get pod egress-router-pod -o jsonpath="{.spec.nodeName}")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 대상 노드에서 디버그 세션으로 들어갑니다. 이 단계는
<node_name>-debug라는 디버그 Pod를 인스턴스화합니다.oc debug node/$POD_NODENAME
$ oc debug node/$POD_NODENAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 디버그 쉘 내에서
/host를 root 디렉터리로 설정합니다. 디버그 Pod는 Pod 내의/host에 호스트의 루트 파일 시스템을 마운트합니다. 루트 디렉터리를/host로 변경하면 호스트의 실행 경로에서 바이너리를 실행할 수 있습니다.chroot /host
# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow chroot환경 콘솔에서 컨테이너 ID를 가져옵니다.crictl ps --name egress-router-redirect | awk '{print $1}'# crictl ps --name egress-router-redirect | awk '{print $1}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
CONTAINER bac9fae69ddb6
CONTAINER bac9fae69ddb6Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너의 프로세스 ID를 확인합니다. 이 예에서 컨테이너 ID는
bac9fae69ddb6입니다.crictl inspect -o yaml bac9fae69ddb6 | grep 'pid:' | awk '{print $2}'# crictl inspect -o yaml bac9fae69ddb6 | grep 'pid:' | awk '{print $2}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
68857
68857Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너의 네트워크 네임스페이스를 입력합니다.
nsenter -n -t 68857
# nsenter -n -t 68857Copy to Clipboard Copied! Toggle word wrap Toggle overflow 라우팅 테이블을 표시합니다.
ip route
# ip routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예제 출력에서
net1네트워크 인터페이스가 기본 경로입니다. 클러스터 네트워크의 트래픽은eth0네트워크 인터페이스를 사용합니다.192.168.12.0/24네트워크의 트래픽은net1네트워크 인터페이스를 사용하며 예약된 소스 IP 주소192.168.12.99에서 시작됩니다. 포드는 다른 모든 트래픽을 IP 주소192.168.12.1의 게이트웨이로 라우팅합니다. 서비스 네트워크의 라우팅이 표시되지 않습니다.출력 예
default via 192.168.12.1 dev net1 10.129.2.0/23 dev eth0 proto kernel scope link src 10.129.2.31 192.168.12.0/24 dev net1 proto kernel scope link src 192.168.12.99 192.168.12.1 dev net1
default via 192.168.12.1 dev net1 10.129.2.0/23 dev eth0 proto kernel scope link src 10.129.2.31 192.168.12.0/24 dev net1 proto kernel scope link src 192.168.12.99 192.168.12.1 dev net1Copy to Clipboard Copied! Toggle word wrap Toggle overflow