본문 바로가기

⌛ AWS 인프라 구성하기 (MiniProject)/✅ 테스트 (Test)

(EKS) 동일 Namespace내의 pod간 통신 테스트

pod간 통신 확인 및 curl 을 통해 pod간 API 호출이 가능한지 확인한다.

기본 명령어는 아래와 같다.

kubectl exec -it [pod_name] -n [namespace_name] -- bash

1. pod 리스트 조회

kubectl get pod

kubectl get pod -n {namespace_name}

2. pod 내부 접근

kubectl exec -it mynginx-pod -- bash

컨테이너에서 실행할 명령어(bash) 앞에 -- 을 붙여준다.

3. pod간 통신 및 pod와 node간 통신 확인하기

- pod의 ip를 조회한다.

kubectl get pod -n {namespace_name} -o wide

- pod에 접속한다.

kubectl exec -it {pod_name} -n {namespace_name} -- bash

- pod에 접속한 상태에서 위에서 조회한 다른 pod의 ip로 ping 테스트를 수행한다.

# ping 10.100.30.70
PING 10.100.30.70 (10.100.30.70) 56(84) bytes of data.
64 bytes from 10.100.30.70: icmp_seq=1 ttl=255 time=0.023 ms
64 bytes from 10.100.30.70: icmp_seq=2 ttl=255 time=0.025 ms
64 bytes from 10.100.30.70: icmp_seq=3 ttl=255 time=0.027 ms
64 bytes from 10.100.30.70: icmp_seq=4 ttl=255 time=0.023 ms
64 bytes from 10.100.30.70: icmp_seq=5 ttl=255 time=0.028 ms
64 bytes from 10.100.30.70: icmp_seq=6 ttl=255 time=0.026 ms
^C
--- 10.100.30.70 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 129ms
rtt min/avg/max/mdev = 0.023/0.025/0.028/0.004 ms

- 위와 같은 방법으로 pod 및 node의 ping을 테스트 할 수 있다.
-pod 내부에서도 apt-get install 및 yum과 같은 명령어를 실행 가능하므로 필요한 라이브러리등을 설치하여 사용할수 있다.

4. pod내부로 접근 후 다른 pod로 curl 명령어를 활용하여 API 호출

- 조건 : 예를들어 백엔드 pod에서 인증 pod로 토큰을 받아오는 상황이라면, 동일한 namespace에 pod들을 배치 시켜 놓아야 한다.
- 시나리오 : 백엔드 pod에서 인증 pod로 curl 로 토큰을 받아오는 작업 진행
1. pod 내부로 접근

kubectl exec -it {pod_name} -- bash

kubectl exec -it frontend-pod -- bash

2. ip 정보 확인

hostname -I

3. 확인된 ip를 통해 내부에서 다른 pod로 API 호출
간단하게 GET 정보를 호출하는 방법을 확인한다.
일단, 인증 pod에 접근하여 pod의 내부 ip를 확인한다.
그리고 나서 다른 pod 예를들어 backend pod 내부로 접근한 뒤 아래의 명령어를 입력하여 API를 호출한다.
GET Mapping

curl -X GET "192.168.0.156:3000/member"

curl -X GET "{인증pod의 IP}:{인증 pod의 port번호}/member"

결과

- 아래와 같이 사용자 인증 API 서버 입니다. 라는 문구가 출력된다.

결론

즉, 동일한 Namespace 안에 존재하는 pod끼리는 내부 pod IP를 통해 서로간 통신이 가능하다.