본문 바로가기

⌛ AWS 인프라 구성하기 (MiniProject)/✅ 개발환경 구성 (EKS)

실행중인 pod로 접근 및 연결 확인하기 (pod ping test)

현재 실행중인 pod로 접근하여 리소스 정보를 확인한다.

명령어는 아래와 같다.

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

1. pod 리스트 조회

kubectl get pod

kubectl get pod -n {namespace_name}

2. 조회한 pod id를 활용하여 pod 내부로 접근한다. (docker container 접근 방법과 매우 유사하다.)

kubectl exec -it {pod_id} /bin/bash

3. 실행 했는데 에러 발생함 → 구글 검색 시작

kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.

4. 검색결과 버전이 바뀌면서 명령어가 바뀌었다고 함.

- 이전 명령어

kubectl exec -it mynginx-pod bash

- 변경된 명령어

kubectl exec -it mynginx-pod -- bash

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

5. 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을 테스트 할 수 있다.

6. pod 내부로 접근 후 업데이트 하기

- pod 내부로 접근하여 어떤 작업을 수행할때, 라이브러리가 없거나 패키지가 없어서 오류가 발생하는 경우가 많다. 예를들어 아래와 같은 메세지가 출력된다.

bash: ping: command not found

- 이럴 경우에는 내부로 접근하여 라이브러리를 다운받거나 업데이트를 해줘야 한다.

- 예를들어 ping 명령어를 처리할 수 있는 패키지는 apt-get install iputils-ping 명령어로 설치한다.

apt-get update

apt-get install iputils-ping

- pod 내부에서 도일한 vpc 내에 있는 ec2 인스턴스로 ping 테스트 하는 경우에도 위와 같이 라이브러리릴 설치 후 테스트를 진행하면 된다.

7. 외부 연결 확인하기

- pod의 컨테이너로 접근하여 동일한 vpc의 ec2에 설치된 애플리케이션의 port가 커넥션이 되는지 테스팅

curl -v telnet://{ip_정보}:{port_정보}

curl -v telnet://10.100.0.0:5433

- 결과

# curl -v telnet://10.100.0.0:5433
*   Trying 10.100.0.0:5433...
* TCP_NODELAY set
* Connected to 10.100.0.0 (10.100.0.0) port 5432 (#0)