Kubernetes にデプロイした複数 Pod のログをまとめて見られる「k8stail」が大変便利だった
Kubernetes を使い始めて困ったのが、動作中の Pod (コンテナ) の動作をリアルタイムで確認する方法。
Pod 内のプロセスが標準出力に出力する情報は、kubectl logs
コマンドで一応見られる。しかしこのコマンド、基本は Pod 単位でログを見る前提の作りで、$ kubectl get pod
コマンドで Pod 名を調べて、それを引数に与えてやらないといけない。
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
my-pod-deployment-5cd8cc5766-8hkkp 1/1 Running 0 2h
my-pod-deployment-5cd8cc5766-kvf5p 1/1 Running 0 2h
my-pod-deployment-5cd8cc5766-t9lnz 1/1 Running 0 2h
# 1件目の Pod のログだけ表示
$ kubectl logs my-pod-deployment-5cd8cc5766-8hkkp
しかしコレだと、ReplicaSet による冗長構成を取っている場合が厄介。直前のリクエストをどの Pod で受け取ったのかが分からないためだ。
他に Label での指定もできるが、コレも「Pod ごとのログ」を順に並べて表示するので、分かりづらい。表示されるデフォルトの行数も短いので、--tail
オプションの指定も必要だ。
$ kubectl logs -lapp=my-app --tail=500
コレでも結局 tail -f
のようには閲覧できず、かなりしんどい。
…というしんどみを愚痴ったところで紹介するのが、k8stail
というツールだ。Mac 用なら Homebrew からインストールできる他、Windows・Linux 版もある。
- 参考 : k8stail: Kubernetes の複数 Pod のログをまとめて流し読みできるツールを作った - 端子録
- 参考 : GitHub - dtan4/k8stail: tail -f experience for Kubernetes Pods
- 参考 : Releases · dtan4/k8stail · GitHub
# Homebrew でのインストール
$ brew tap dtan4/dtan4
$ brew install k8stail
インストールしたら、$ k8stail
を叩くだけ。引数を指定しない場合、デフォルトのネームスペースにある Pod たちを特定し、標準出力を監視・出力してくれる。
複数の Pod を冗長構成で立ち上げている場合も、時系列で良い感じにリアルタイム出力されるので、連続したリクエストに対する動作ログを確認する時なんかがとても楽。
kubeconfig
ファイルの差し替えは、環境変数 KUBECONFIG
での指定でも、オプション引数での指定でも対応できるのが素敵。
とっても使いやすいのでオススメ。