Kubernetesでアプリケーションを動かしていると、
- 「エラーが出たけど、原因がわからない」
- 「ちゃんと動いてるか確認したい」
といった場面によく出会います。
そんなときに役立つのが、kubectl logs
コマンドです。
✅ kubectl logs
とは?
kubectl logs
は、Pod内のコンテナが標準出力(stdout)や標準エラー出力(stderr)に書き出したログを取得するコマンドです。
Dockerで言う docker logs
に近い役割ですね。
🧪 基本の使い方
kubectl logs POD名
たとえば、myapp-5d84b8d79d-2xz7q
というPodのログを見たい場合:
kubectl logs myapp-5d84b8d79d-2xz7q
→ そのPod内の最初の(もしくは唯一の)コンテナのログが表示されます。
🧩 コンテナ名の指定(複数コンテナがある場合)
Pod内に複数のコンテナがある場合は、どのコンテナのログを見るかを指定する必要があります。
kubectl logs POD名 -c コンテナ名
例:
kubectl logs myapp-5d84b8d79d-2xz7q -c nginx
🔁 過去のPodのログ(前回起動分)
Podが再起動した場合、前のログが必要なことがあります。
kubectl logs POD名 --previous
例:
kubectl logs myapp-xxx --previous
これは「前のコンテナ実行時」のログを取得します。
📡 リアルタイムでログを見る
-f
オプションをつけると、ログをリアルタイムで監視できます(tail -f のような動き)。
kubectl logs -f POD名
よくある使い方:
kubectl logs -f myapp-xxx
→ アプリケーションが標準出力にログを吐き出していれば、リアルタイムに確認できます。
💡 よくある補足テクニック
用途 | コマンド例 |
---|---|
最後の100行だけ見たい | kubectl logs POD名 --tail=100 |
grepで絞り込み | `kubectl logs POD名 |
ファイル保存 | kubectl logs POD名 > log.txt |
⚠️ 注意点
kubectl logs
はあくまで 「標準出力」ベースです。ファイルに書き出したログは見えません。- 古いログはコンテナ再起動や削除で消える場合があります。
- 本格的なログ管理には、Fluentd + Elasticsearch + Kibana(EFK) や Loki + Grafana などの仕組みが必要です
📌 まとめ
ポイント | 説明 |
---|---|
kubectl logs POD名 | 最も基本的なログ確認方法 |
-f | ログのリアルタイム監視 |
--previous | 再起動前のログ確認 |
-c コンテナ名 | 複数コンテナPodでの指定 |
Kubernetesでは、Podの状態確認の第一歩がログの取得です。
原因不明の挙動があったときは、まず kubectl logs
を使ってアプリケーションの声を聞いてみることが重要です。