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 を使ってアプリケーションの声を聞いてみることが重要です。
