쿠버네티스 컨테이너 인터페이스 식별하는 방법
쿠버네티스 환경에서 특정 컨테이너의 인터페이스를 모니터할 일이 생겼는데,
해당 컨테이너 인터페이스의 pair가 어떤건지 식별하는 방법을 모르겠어서 이곳에 기록하고 공유한다.
먼저 찾으려는 pod의 pause 컨테이너ID를 찾는다.:
$ sudo docker ps |grep proxy-nginx
89a1d0a081f3 5a3221f0137b "nginx -g xy-nginx-576d4fd9cd-4gprn_fd790dd7-3c0b-11ea-be0d-e4434b6e257c_0
221c4add4238 google_containers/pause-amd64:3.1 "/pause" -nginx-576d4fd9cd-4gprn_fd790dd7-3c0b-11ea-be0d-e4434b6e257c_0
- 두 번째 컨테이너인 221c4add4238가 네트워크 네임스페이스를 공유하는 pause 컨테이너이다.
pause 컨테이너의 ID를 가지고 pid를 찾는다.:
$ sudo docker inspect --format '{{ .State.Pid }}' 221c4add4238
68855
찾은 pid를 가지고 해당 pid의 네트워크 네임스페이스 안에서 인터페이스 인덱스를 식별한다.:
$ sudo nsenter -t 68855 -n ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
3: eth0@if232: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 36:e4:45:56:18:99 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.18.206.132/32 scope global eth0
valid_lft forever preferred_lft forever
- 컨테이너의 인터페이스인 eth0과 pair 맺은 인터페이스 인덱스는 232번 이다.
이제 호스트에서 인덱스 232 번 인터페이스를 찾는다.:
$ ip a |grep 232
232: cali29544dc48cd@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
- cali29544dc48cd인터페이스임을 알 수 있다.
reference