sternとは?Kubernetesログを一括表示するCLIツール
stern
は、複数Podのログをラベルや名前パターンで絞って、リアルタイムに tailできるCLIツールです。
本記事では、stern
のインストール方法と活用事例を実務目線でまとめます。
kubectl logs
ではなくstern
を使う利点は主に以下のような点です。
- 複数Podのログを一括表示可能
- 各コンテナのログを時系列で表示できる
- --selectorオプションで特定のラベルが付与されたPodのログのみ表示可能
- --excludeオプションでログを正規表現で指定可能
想定読者
-
kubectl logs
が面倒に感じている方 - 複数Podのログを横断的に確認したいKubernetesユーザー
- DevOps・SREを目指す方
sternのインストール方法
macOS環境の方は方法①で、Linux環境の方は方法②でインストール
方法①: Homebrew(macOS向け)
brew install stern
方法②: バイナリダウンロード(Linux向け)
# 最新バージョンを確認(例: v1.29.0)
$ VERSION=$(curl -s https://api.github.com/repos/stern/stern/releases/latest | grep tag_name | cut -d '"' -f 4)
$ echo $VERSION #←バージョンが表示されるか確認
# ダウンロードしてインストール(Linux amd64 の場合)
$ curl -LO https://github.com/stern/stern/releases/download/${VERSION}/stern_${VERSION#v}_linux_amd64.tar.gz
# 解凍して /usr/local/bin に移動
$ tar -xzf stern_${VERSION#v}_linux_amd64.tar.gz
$ sudo mv stern /usr/local/bin/
🔍 確認:インストールが完了したかどうか以下のコマンドで確認
$ stern --version
他にもインストール方法は存在するので以下のサイトを参考にしてください
https://github.com/stern/stern
基本的な使い方
Pod名の一部でログを確認(myapp-・・・Podが複数存在するとします)
$ stern myapp
Namespaceを指定(my-namespaceにあるmyappのログを取得)
$ stern -n my-namespace myapp
ラベルセレクタでPodを指定(ラベルappの値がmyappのPodのログを取得)
$ stern -l app=myapp
タイムスタンプ付きで見る
$ stern -t myapp
🎯 活用例:現場で役立つ3パターン
✅ CI/CD後にログを即チェック
$ stern -n dev -l app=myapi
✅ 複数Podの振る舞いをまとめて確認
$ stern . # 全Pod対象(便利だが注意)
✅ container指定(複数コンテナPod対応)
$ stern mypod --container frontend
🔧 よく使うオプション
コマンド | 説明 |
---|---|
stern . |
すべてのPodのログを tail |
stern -n my-namespace app |
特定のNamespaceでログを見る |
stern -l app=myapp |
ラベルで対象Podを絞る |
stern -t |
タイムスタンプを表示 |
stern -o json |
JSON形式で出力 |
stern --container container1 |
特定コンテナのみ表示(複数ある場合) |
kubectl logsとの違い
機能 | kubectl logs | stern |
---|---|---|
リアルタイム表示 |
-f で可 |
デフォルトで可 |
複数Pod対応 | スクリプト要 | 対応済み |
カラーログ表示 | × | ✅ |
ラベル選択 | × | ✅ |
まとめ
stern
は Kubernetes ログ確認の効率を劇的に改善
複数Pod、複数コンテナ、ラベルベースで柔軟にtailできる
kubectl logs で消耗していたら即導入すべき
📚 公式ドキュメント・参考リンク
👨💻 著者について
インフラ・セキュリティ・DevOpsを中心に活動中の大学3年(執筆時)
KubernetesやCI/CD(GitLab×GKE)を軸にポートフォリオを構築中
よければフォローお願いします 🙌