Run The Bridge

kubernetes project -7- 본문

Cloud/Project

kubernetes project -7-

anfrhrl5555 2021. 11. 5. 14:31
728x90
반응형

0. 들어가기에 앞서

11월이 되면서 쿠버네티스 프로젝트 기간이 끝나간다.

 

중간중간에 수정이랑 변경이 많았는데.... 마지막 날에 쭉 정리하려고 아직 글을 작성하지 않았다.

 

오늘은 쿠버네티스 상에서 컨테이너가 외부 통신을 하는 패킷을 잡는 방법을 한 번 해보자!!

 

들어가기 전에! 쿠버네티스 아키텍처를 잠깐 공부하고 오면 매우 도움이 됩니다~~ ^____^


1. docker container ID

현재 내가 운영하고 있는 Pod들은 다음과 같다.  올라가 있는 Pod의 Container ID는 Docker 명령어를 통해서 알 수 있다.

 

일단 zabbix-server의 Container ID를 먼저 알아본다.

k describe pod -n zbx zabbix-server-55b5765c8f-ng4hm  # 나는 kubectl를 k로 줄였다.

자.. 이제 저 container ID를 복사해놓고 (f068e5cb34132e367d899c1057c50b2db1177ce21f95b82c739a3d6afb26e519)

 

해당 Pod가 올라가 있는 vm으로 이동해서(kube-worker2) 아래의 명령어 중 되는 명령어를 골라서 쓰면 된다.

 

image가 bash를 지원 안 할 수 있으니 sh도 써본다.

docker exec [container ID] /bin/bash -c 'cat /sys/class/net/eth0/iflink'
docker exec [container ID] /bin/sh -c 'cat /sys/class/net/eth0/iflink'

 

이렇게 13이라는 숫자를 얻을 수 있다. 13이라는 숫자는 시스템 전체 인터페이스 고유 인덱스 식별자라고 한다.

 

 

다음 docs에서 확인을 할 수 있다.(관심 있으면 들어가서 한 번 읽어보세요!!)

https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-net

 

※ Container ID가 너무 길어서 안 나오는 경우

간편하게 보고 싶은 Pod가 올라가 있는 VM으로 이동해서 'docker ps -a'로 간편하게 확인할 수 있다.

 

container ID가 너무 길어 오류가뜬다.

 

docker ps -a로 확인 후 입력


2. ip link 명령어 사용

위의 13이라는 숫자를 다음 명령에 넣어주면 되다.

ip link |grep ^[number]:

grep 해서 가져오는 전체 정보는 다음과 같다.

ip link

그러면 이제 zabbix-server는 'cali8e9d3c69b64'라는 네트워크 인터페이스를 쓴다는 걸 알 수 있다. packet capture를 해보자


3. wireshark를 이용한 packet capture

wireshark는 Google에서 'How to install wireshark in linux or ubuntu'라고 치면 한 줄 명령어로 간단하게 설치할 수 있다.

 

또는 tcpdump가 익숙하시면 tcpdump를 사용해도 무방하다.

wireshark 실행모습

우측 인터페이스에서 'cali8e9d3c69b64를 찾는다.

 

zabbix-server는 SNMP통신을 하므로..SNMP protocol 검색을 해보자

위와 같이 SNMP통신을 하고 있는 zabbix-server packet을 볼 수 있었다.

 

이제 마지막으로 일일이 할 때마다 Container ID 찾고... ip link 찾고 하면 귀찮으니까 shell script를 작성해보자!(귀차낭)


4. 정리

1. kgp -n zbx로 Pod를 본다.

 

2. 해당 Pod가 올라가 있는 VM으로 이동한다.

 

3. docker ps -a로 Pod의 Container ID를 본다.

 

4. docker exec [Container ID] /bin/bash or /bin/sh -c 'cat /sys/class/net/eth0/iflink'를 입력한다.

 

5. ip link | grep ^[number]: 를 입력한다.

 

6. 그 후 wireshark, tcpdump 등으로 패킷을 캡처한다.

728x90
반응형

'Cloud > Project' 카테고리의 다른 글

kubernetes project -8-(종료)  (2) 2021.11.17
kubernetes project -6-  (0) 2021.10.24
kubernetes project -5-  (0) 2021.10.21
kubernetes project -4-  (0) 2021.10.16
kubernetes project -3-  (0) 2021.10.14
Comments