Run The Bridge
kubernetes project -7- 본문
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'로 간편하게 확인할 수 있다.
2. ip link 명령어 사용
위의 13이라는 숫자를 다음 명령에 넣어주면 되다.
ip link |grep ^[number]:
grep 해서 가져오는 전체 정보는 다음과 같다.
그러면 이제 zabbix-server는 'cali8e9d3c69b64'라는 네트워크 인터페이스를 쓴다는 걸 알 수 있다. packet capture를 해보자
3. wireshark를 이용한 packet capture
wireshark는 Google에서 'How to install wireshark in linux or ubuntu'라고 치면 한 줄 명령어로 간단하게 설치할 수 있다.
또는 tcpdump가 익숙하시면 tcpdump를 사용해도 무방하다.
우측 인터페이스에서 '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 등으로 패킷을 캡처한다.
'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 |