쿠버네티스 컨테이너 인터페이스 식별하는 방법

쿠버네티스 환경에서 특정 컨테이너의 인터페이스를 모니터할 일이 생겼는데,

해당 컨테이너 인터페이스의 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