(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Kubernetes/stern】Deploymentに紐づくPodのログを一気に確認するツール

スポンサーリンク

はじめに

Deploymentを単純にサービスに紐づけている場合はどのPodに通信が流れるかは判断できないため、ログ調査をする場合は各Podを選定しながら

$ kubectl logs PODNAME

にてログを標準出力に出して確認しますがこれは時に面倒です。

そんな時に重宝するツール「stern」を紹介します。

環境情報
  • Windows 10
  • Cygwin
  • stern version 1.11.0

インストールとコマンド確認

Stern allows you to tail multiple pods on Kubernetes and multiple containers within the pod. Each result is color coded for quicker debugging.

という説明書きがある同ツールを

上記リンクからexe形式ダウンロードし、パスを通します。

$ mv /cygdrive/c/Users/xx/Downloads/stern_windows_amd64.exe /usr/local/bin/stern.exe
$ which stern
/usr/local/bin/stern
$ stern --version
stern version 1.11.0

尚、コードの実体はGo言語で、ソースも公開されています。

Deploymentのログを表示する

以下のようにデプロイメントに紐づくNginxのPodがあるとして

$ kubectl get deployment nginx-test -n test
NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
nginx-test   2/2     2            2           ...

Pod名は以下とします。

$ kubectl get pod -n test
NAME                                                READY   STATUS      RESTARTS   AGE
nginx-test-65665c899c-mkrhk              1/1     Running     0          ...
nginx-test-65665c899c-vxdg7              1/1     Running     0          ...

ここで以下のようにアスタリスクを利用した正規表現で検索をかけると

$ stern nginx-test-65665c899c-* -n test

該当する2つのPodが"app"に指定した文字列月で表示されて

nginx-test-65665c899c-vxdg7 web 10.X.X.X - - [...+0900] "GET /favicon.ico HTTP/1.1" 404 209 "..." "Mozilla/5.0 (Windows NT 1
0.0; Win64; x64) ... 0.002
nginx-test-65665c899c-mkrhk web 10.Y.Y.Y - - [..+0900] "GET / HTTP/1.1" 200 112 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... 0.014

アクセスを発生させると両者のログが入り乱れながら表示されていきます。

終わりに

オプションにて--exclude-containerを利用するとPod内の特定名のコンテナのログは表示されない、など気の利いた制御ができるのでかなり便利です。

Kubernetesのログ調査を定期的にする方はインストールしておくことをオススメします。以上です。