kubectl logsによるログ管理
kubectlを使ってKubernetesクラスターからコンテナログに直接アクセスし、分析します。
「kubectl logsによるログ管理」はCoddyKit上の無料Kubernetes Basicsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKubernetes Basics学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kubernetes Basicsコースには全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チューター)、Kubernetes Basicsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kubernetes Basicsコースには全4レッスンが含まれています。
「kubectl logsによるログ管理」で何を学びますか?
kubectlを使ってKubernetesクラスターからコンテナログに直接アクセスし、分析します。 ブラウザで直接実行するハンズオンコードでKubernetes Basicsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kubernetes Basicsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKubernetes Basicsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「kubectl logsによるログ管理」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKubernetes Basicsレッスンでコードを書いて実行できますか?
はい。すべてのKubernetes Basicsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- kubectl logsによるログ管理
- PrometheusとGrafanaによるメトリクス管理
- ヘルスチェック:LivenessとReadiness Probe
- 分散トレーシングとイベント