0Pricing
DevOps Bootcamp · レッスン

kubectl logsによるログ管理

kubectlを使ってKubernetesクラスターからコンテナログに直接アクセスし、分析します。

「kubectl logsによるログ管理」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

Kubernetesでログが重要な理由

Kubernetesでは、アプリケーションの動作を理解することが重要です。ログはアプリケーションの日記のようなもので、イベント、エラー、ステータスの更新を記録します。

ログは次の目的に不可欠です。

  • デバッグ:問題発生時に原因を特定します。
  • モニタリング:アプリケーションの健全性とパフォーマンスを監視します。
  • 監査:時間の経過に伴う操作や変更を追跡します。

コンテナログの説明

コンテナ化されたアプリケーションは通常、標準出力(stdout)と標準エラー(stderr)のストリームに出力を書き込みます。Kubernetesは、各コンテナのこれらのストリームを収集します。

これらのストリームはKubernetes APIを通じて利用できるため、ノードや個々のコンテナにSSH接続しなくても簡単にアクセスできます。

kubectl logsの紹介

kubectl logsコマンドは、KubernetesのPodで実行されているコンテナのログにアクセスするための主要なツールです。使い方は簡単で、便利なオプションもいくつか用意されています。

最も基本的な使い方は、調査したいPodの名前を指定するだけです。

ログを生成するPodの作成

kubectl logsの動作を確認するために、標準出力へ継続的にメッセージを出力する単純なPodをデプロイしたとします。これにより、実際のアプリケーションがログを生成する状況を再現できます。

このようなPodのYAMLは次のとおりです(kubectl apply -fを使って適用します)。

apiVersion: v1
kind: Pod
metadata:
  name: busybox-logger
spec:
  containers:
  - name: busybox-container
    image: busybox
    command: ['sh', '-c', 'while true; do echo "$(date) - Hello from BusyBox"; sleep 5; done']
  restartPolicy: Always

基本的な Pod ログの表示

busybox-logger Pod が実行中であることを(kubectl get pods で)確認したら、基本的な kubectl logs コマンドを使ってログを取得できます。

これにより、その時点までに記録されたすべてのログエントリが表示されます。

kubectl logs busybox-logger

リアルタイムログのストリーミング

ライブデバッグでは、Linux の tail -f と同様に、ログが発生した時点で確認する必要があることがよくあります。-f または --follow フラグを使うと、これを実現できます。

コンテナから新しいログエントリが継続的にストリーミングされます。

kubectl logs -f busybox-logger

以前のコンテナのログ

Pod 内のコンテナがクラッシュして再起動した場合、デフォルトでは kubectl logs は*現在*実行中のインスタンスのログを表示します。

コンテナの*以前の*終了したインスタンスのログを表示するには、--previous または -p フラグを使います。コンテナが失敗した原因をデバッグするうえで非常に役立ちます。

kubectl logs -p busybox-logger

特定のコンテナのログ

Pod に複数のコンテナ(メインアプリケーションと、ロギングや監視用のサイドカーなど)を実行させることがあります。Pod に複数のコンテナがある場合は、-c または --container フラグを使って、どのコンテナのログを表示するか指定する必要があります。

kubectl logs my-multi-container-pod -c my-sidecar-container

ログ出力のフィルタリングと制限

ログの特定の部分だけが必要な場合や、最新のエントリだけを確認したい場合があります。kubectl logs は、標準的な Linux コマンドと組み合わせたり、組み込みのフラグを使ったりできます。

  • grep でフィルタリング: 出力を grep にパイプして、特定のキーワードを検索します。
  • --tail で行数を制限: ログの最後の N 行だけを表示します。
kubectl logs busybox-logger | grep "Hello"
kubectl logs busybox-logger --tail=5

ログコマンドのチャレンジ

frontend と backend という 2 つのコンテナを持つ、my-app-pod という名前の Pod があります。backend コンテナが最近クラッシュして再起動しました。backend コンテナの以前のインスタンスのログを表示したいとします。

ログとデバッグのまとめ

おめでとうございます。kubectl logs を使ってコンテナログにアクセスし、分析するための基本を学びました。この強力なコマンドは、Kubernetes 上で実行されているアプリケーションの状態を把握し、トラブルシューティングを行ううえで欠かせません。

覚えておきたい主なコマンド:

  • kubectl logs <pod-name>: 基本的なログの取得。
  • kubectl logs -f <pod-name>: ログをリアルタイムでストリーミング。
  • kubectl logs -p <pod-name>: 以前のコンテナインスタンスのログを表示。
  • kubectl logs -c <container> <pod-name>: 特定のコンテナのログを対象にする。

よくある質問

「kubectl logsによるログ管理」レッスンは無料ですか?

はい。「kubectl logsによるログ管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「kubectl logsによるログ管理」で何を学びますか?

kubectlを使ってKubernetesクラスターからコンテナログに直接アクセスし、分析します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「kubectl logsによるログ管理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. kubectl logsによるログ管理
  2. PrometheusとGrafanaによるメトリクス管理
  3. ヘルスチェック:LivenessとReadiness Probe
  4. 分散トレーシングとイベント
← DevOps Bootcampに戻る