Kubetail — Multiple POD 로그 조회

Jerry(이정훈)
5 min readApr 3, 2021

--

Kubernetes 환경에서 여러 POD 로그를 동시에 조회하는 방법으로 kubetail을 추천합니다. 사용법이 아주 직관적인데 실습으로 소개해 드립니다. stern 과 거의 동일한 것 같은데, 저는 kubetail 이 좀 더 이름이 직관적이라 외우기 쉬워 stern 대신 사용하게 되었습니다.

주요 장점은 1) 여러 pod 로그 동시 조회 (POD 이름 * 지원) 2) 네임 스페이스 전체 로그 조회(-n metallb-system 지원) 입니다.

먼저, 설치 방법은 아주 간단하여 공식 링크로 대신 합니다.

설치 후 /usr/local/bin/kubetail 등에 PATH 경로 지정하고 autocompletion까지 설정합니다. (source $HOME/kubetail/completion/kubetail.bash)

사용 예시로 MetalLB를 이용합니다. MetalLB 환경에서 외부 접속 시 어떤 노드에서 응답하는지 궁금한데 (어떤 노드에서 MAC 응답 처리를 하는지), 이런 경우 일일이 개별 POD 로그를 확인하지 않고 간단히 kubetail 사용하면 전체 POD의 로그를 한꺼번에 보실 수 있습니다.

먼저 해당 네임스페이스 전체 POD 현황입니다.

[spkr@erdia22 erdia (spkn01:metallb-system)]$ kgp (k get pod)
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
controller-7fc84d865b-2gnrp 2/2 Running 0 40d 10.233.92.118 node3 <none> <none>
speaker-7d4zm 1/1 Running 1 44d 172.17.16.153 node3 <none> <none>
speaker-s86sc 1/1 Running 1 44d 172.17.16.151 node1 <none> <none>
speaker-zlvjr 1/1 Running 1 44d 172.17.16.152 node2 <none>

-n Namespace 옵션을 사용하면 전체 POD + 컨테이너 로그 확인이 가능합니다. ( — since 옵션 사용하면 좀 더 편리하겠죠)

[spkr@erdia22 erdia (spkn01:metallb-system)]$ kubetail -n metallb-system --since 10s
Will tail 6 logs...
controller-7fc84d865b-2gnrp controller
controller-7fc84d865b-2gnrp linkerd-proxy
controller-7fc84d865b-2gnrp linkerd-init
speaker-7d4zm
speaker-s86sc
speaker-zlvjr
[speaker-zlvjr] {"caller":"net.go:210","component":"Memberlist","msg":"[DEBUG] memberlist: Stream connection from=172.17.16.153:54782","ts":"2021-04-03T19:09:25.388741996Z"}

너무 로그가 많으니 실제 처리를 하는 speaker 로 filtering 하시면 좀 더 편리합니다.

[spkr@erdia22 erdia (spkn01:metallb-system)]$ kubetail speaker-*
(로그 생략)
[speaker-zlvjr] {"caller":"arp.go:102","interface":"eth0","ip":"172.17.29.181","msg":"got ARP request for service IP, sending response","responseMAC":"50:6b:8d:9b:2f:2e","senderIP":"172.17.18.2","senderMAC":"00:50:56:b4:82:55","ts":"2021-04-03T18:34:33.239382128Z"}

제가 원하던 response 로그 확인이 가능합니다. speker-zlvjr POD가 응답 하였으니 node2에서 응답을 하였군요. 다음 번에 grep 으로 한 번 더 filtering하면 좀 더 빠르게 가능합니다.

[spkr@erdia22 erdia (spkn01:metallb-system)]$ kubetail speaker-* |grep -i sender

물론 이런 Tool 과 함께 Loki를 사용해서 중앙 로그 관리도 필요 합니다. 오늘도 (공식 문서만 보아도 누구나 다 아는) 간단한 tip 공유 드렸습니다. ^^

감사합니다.

--

--

Jerry(이정훈)
Jerry(이정훈)

Written by Jerry(이정훈)

DevOps/Automation Engineer 60살까지 콘솔 잡는 엔지니어를 목표로 느리게 생각하고 있습니다.

No responses yet