🤖
k8sでkubectl logsでログを確認したい
前提
k82のロギングはfluentdやsentryを使ってログを集めてElasticSearch+kibanaなどで見られるようにするのが一般的です。
ですが、今回は以下の条件が重なってkubectl logs
を使って確認する必要があったため、その方法を調べました。
- 本番やSTGやDEV環境とは別に新しく環境を構築
- 本番やSTGではロギングをしているが、そこに新しい環境のログを混ぜたくない
- Nuxtのサーバーサイドレンダリング時のログを確認したいが、フロントはログをファイル出力していない
※フロント用のPodは1つのみ。
方法
以下で指定したPodにあるコンテナのログを確認できます。
kubectl logs <pod-name> -c <container-name>
とはいえ、このままだと毎回Podの名前調べたりちょっと面倒です。なので、kubeclt get pods
とgrep
、awk
等を組み合わせて楽できるようにしました。
※なお、Pod名は「固定文字列+ランダム文字列」になる想定です。
kubectl logs `kubectl get pods | grep front-sample | awk '{print $1}' | head -n 1` -c nspf-item-web
やり方は単純にkubectl get pods
でPod情報を出力、それをgrep
、awk
、head
コマンドをつなげて絞ってPod名を出力させています。
ちょっと長いですが、エイリアス作ってあげれば短くできて使い回しやすくなるのでお好みで設定してください。
参考
Discussion