Kubernetesを運用していると、Podのログが見たくなることはよくあると思います。
kubectl get pods
でPod名を調べ、kubectl logs -f
して、kubectl apply
でPodが入れ替わるとまた1から・・・これだけでも面倒ですね。
sternというツールは、正規表現でPodを指定でき、Podの生まれ変わりも自動で検知し、新しいPodからログ読み込んでくれます。ログを見る作業がぐっと楽になりますので、早速導入していきましょう。
検証環境
- macOS 12.1
- stern 1.21.0
次のアプリをデプロイし、動作確認をしています。
GitHub - vtj-ttanaka/hello-minikube
NAME READY STATUS RESTARTS AGE pod/hello-web-56b584bd88-2j92b 1/1 Running 0 41m pod/hello-web-56b584bd88-4twkc 1/1 Running 0 41m pod/hello-web-56b584bd88-dcnxs 1/1 Running 0 41m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/hello-svc LoadBalancer 10.104.236.65 <pending> 8080:31203/TCP 41m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/hello-web 3/3 3 3 41m NAME DESIRED CURRENT READY AGE replicaset.apps/hello-web-56b584bd88 3 3 3 41m
インストール
macOSをお使いの場合は、Homebrewを使ってインストールすると簡単です。
brew install stern
Homebrewが使えない環境では、GitHubのReleasesから自分の環境に合ったバイナリをダウンロードし、パスの通ったディレクトリに設置してください。
次のコマンドを実行し、エラーがでなければ完了です。
stern --version
実際に使ってみる
sternコマンドの使い方は次の通りです。
stern pod-query [flags]
pod-query
にはPodを検索するための正規表現を記述します。
sternのソースコードを見てみると、標準のregexpパッケージを使っているようなので、正規表現はRE2で記述できそうです。
flags
はコマンドラインオプションです。全てのオプションは-h
か--help
で確認できます。
pod-query
とflags
の記述が逆になっていても動くようです。
ログの自動読み込みはオプション等ありません。自動で動作しますので、sternでログを見ながらkubectl apply
などを試してみてください。
それではまず全てのログを出力してみます。
stern . -A
pod-query
の指定では.
を指定していますので、全ての条件にマッチします。
-A
は--all-namespaces
のショートオプションで、全てのNamespaceを対象とします。
Pod名は見やすいように色分けされて出力されていますが、もし見づらい場合は--color never
で色付けを止めることも可能です。
また、出力のフォーマットも指定でき--output [default|raw|json]
で変更できます。
Pod名の一部を指定して出力してみます。
stern hello -A
hello-web
のログが出力されたと思います。正確なPod名を指定する必要はありません。
-e
や-E
、--exclude-pod
で不要なログやコンテナ、PodをExcludeすることもできます。
少し変わった機能として、インタラクティブにラベルを選択し、ログを表示します。
しかし、この機能は全てのラベルが対象ではなく、app.kubernetes.io/instance
ラベルのみが対象のようです。
stern -p
No matching labels
と出た場合は、default
のNamespaceにapp.kubernetes.io/instance
ラベルを持ったリソースが存在しないのかもしれません。
-A
で全てNamespaceを対象とするか、-n
で対象のNamespaceを絞り込むといいでしょう。
まとめ
簡単ではありますが、よく使いそうな機能をまとめてみました。
ログの自動読み込みがあるだけでも、アップデート作業が随分と楽になるのではないでしょうか。
GitHubリポジトリの方には、今回紹介した機能の他に様々な使用例が紹介されていますので、ぜひ確認してみてください。