13.2. 리디렉션 모드에서 송신 라우터 배포
송신 라우터 pod를 배포하여 자체 예약된 소스 IP 주소에서 하나 이상의 대상 IP 주소로 트래픽을 리디렉션할 수 있습니다.
송신 라우터 pod를 추가한 후 예약된 소스 IP 주소를 사용해야 하는 클라이언트 pod는 대상 IP에 직접 연결하는 대신 송신 라우터에 연결하도록 수정해야 합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
- 송신 라우터 정의를 생성합니다.
다른 포드에서 송신 라우터 pod의 IP 주소를 찾을 수 있도록 하려면 다음 예제와 같이 송신 라우터를 사용하는 서비스를 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 송신 라우터의 레이블을 지정합니다. 표시된 값은 Cluster Network Operator에서 추가하며 구성 불가능합니다.
서비스를 생성한 후 포드가 서비스에 연결할 수 있습니다. 송신 라우터 pod는 트래픽을 대상 IP 주소의 해당 포트로 리디렉션합니다. 이 연결은 예약된 소스 IP 주소에서 시작됩니다.
검증
Cluster Network Operator가 송신 라우터를 시작했는지 확인하려면 다음 절차를 완료합니다.
송신 라우터에 대해 Operator가 생성한 네트워크 연결 정의를 확인합니다.
oc get network-attachment-definition egress-router-cni-nad
$ oc get network-attachment-definition egress-router-cni-nad
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 네트워크 연결 정의의 이름은 구성할 수 없습니다.
출력 예
NAME AGE egress-router-cni-nad 18m
NAME AGE egress-router-cni-nad 18m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 송신 라우터 pod에 대한 배포를 확인합니다.
oc get deployment egress-router-cni-deployment
$ oc get deployment egress-router-cni-deployment
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 배포 이름은 구성할 수 없습니다.
출력 예
NAME READY UP-TO-DATE AVAILABLE AGE egress-router-cni-deployment 1/1 1 1 18m
NAME READY UP-TO-DATE AVAILABLE AGE egress-router-cni-deployment 1/1 1 1 18m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 송신 라우터 pod의 상태를 확인합니다.
oc get pods -l app=egress-router-cni
$ oc get pods -l app=egress-router-cni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE egress-router-cni-deployment-575465c75c-qkq6m 1/1 Running 0 18m
NAME READY STATUS RESTARTS AGE egress-router-cni-deployment-575465c75c-qkq6m 1/1 Running 0 18m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 송신 라우터 pod의 로그 및 라우팅 테이블을 확인합니다.
송신 라우터 pod에 대한 노드 이름을 가져옵니다.
POD_NODENAME=$(oc get pod -l app=egress-router-cni -o jsonpath="{.items[0].spec.nodeName}")
$ POD_NODENAME=$(oc get pod -l app=egress-router-cni -o jsonpath="{.items[0].spec.nodeName}")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 대상 노드에서 디버그 세션으로 들어갑니다. 이 단계는
<node_name>-debug
라는 디버그 Pod를 인스턴스화합니다.oc debug node/$POD_NODENAME
$ oc debug node/$POD_NODENAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 디버그 쉘 내에서
/host
를 root 디렉터리로 설정합니다. 디버그 Pod는 Pod 내의/host
에 호스트의 루트 파일 시스템을 마운트합니다. 루트 디렉터리를/host
로 변경하면 호스트의 실행 경로에서 바이너리를 실행할 수 있습니다.chroot /host
# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot
환경 콘솔에서 송신 라우터 로그를 표시합니다.cat /tmp/egress-router-log
# cat /tmp/egress-router-log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 로깅 파일 위치 및 로깅 수준은 이 프로세스에 설명된 대로
EgressRouter
오브젝트를 생성하여 송신 라우터를 시작할 때 구성되지 않습니다.chroot
환경 콘솔에서 컨테이너 ID를 가져옵니다.crictl ps --name egress-router-cni-pod | awk '{print $1}'
# crictl ps --name egress-router-cni-pod | awk '{print $1}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
CONTAINER bac9fae69ddb6
CONTAINER bac9fae69ddb6
Copy 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
68857
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너의 네트워크 네임스페이스를 입력합니다.
nsenter -n -t 68857
# nsenter -n -t 68857
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 라우팅 테이블을 표시합니다.
ip route
# ip route
Copy 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.128.10.0/23 dev eth0 proto kernel scope link src 10.128.10.18 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.128.10.0/23 dev eth0 proto kernel scope link src 10.128.10.18 192.168.12.0/24 dev net1 proto kernel scope link src 192.168.12.99 192.168.12.1 dev net1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow