🤖

k8sでkubectl logsでログを確認したい

2022/01/06に公開

前提

k82のロギングはfluentdやsentryを使ってログを集めてElasticSearch+kibanaなどで見られるようにするのが一般的です。
ですが、今回は以下の条件が重なってkubectl logsを使って確認する必要があったため、その方法を調べました。

  • 本番やSTGやDEV環境とは別に新しく環境を構築
  • 本番やSTGではロギングをしているが、そこに新しい環境のログを混ぜたくない
  • Nuxtのサーバーサイドレンダリング時のログを確認したいが、フロントはログをファイル出力していない

※フロント用のPodは1つのみ。

方法

以下で指定したPodにあるコンテナのログを確認できます。

kubectl logs <pod-name> -c <container-name>

とはいえ、このままだと毎回Podの名前調べたりちょっと面倒です。なので、kubeclt get podsgrepawk等を組み合わせて楽できるようにしました。
※なお、Pod名は「固定文字列+ランダム文字列」になる想定です。

kubectl logs `kubectl get pods | grep front-sample | awk '{print $1}' | head -n 1` -c nspf-item-web

やり方は単純にkubectl get podsでPod情報を出力、それをgrepawkheadコマンドをつなげて絞ってPod名を出力させています。
ちょっと長いですが、エイリアス作ってあげれば短くできて使い回しやすくなるのでお好みで設定してください。

参考

https://kubernetes.io/ja/docs/tasks/debug-application-cluster/_print/
https://note.com/shift_tech/n/n503b32e5cd35

Discussion