Kubernetesのログ出力コマンド(kubectl log)【Kubernetes 入門】

コンテナの内部で起こるエラーは、通常のLinux,Windowsサーバー内のログを確認する作業比べて, 何が起こっているかを把握することが難しくなります。

Kubernetesでは、kubectlコマンドを使用することで、より効果的な使用方法が見つかるでしょう。

logsコマンド

kubernetesでは、コンテナが標準出力および標準エラー出力される情報は全てログとみなされます。

分散型アプリケーションの場合、複数のPodからログを収集し、永続的なデータベースに保存することで、クエリ化およびデータベース化することができます。

Podのログを拾う場合、kubectl logsコマンドが使えます。 Podの名前を指定することで、ログを集めることができるのです。

kubectl logs [オプション] <ポッド名>

nginxのログを出力する

以下はnginxのDeploymentを出力するコマンドです。

kubectl create deployment nginx-deployment --image=nginx:latest

ただし、このままではPodの名前が取得できないため、変数名を使います。

POD_NAME=$(kubectl get pods --selector=app=nginx-deployment -o=jsonpath='{.items[0].metadata.name}')

取得したPodの名前を使えば、ログ出力が可能です。

kubectl logs $POD_NAME

logの--tailオプション

ログを出力する際、何もオプションをつけなければ大量に情報が流れてくるのみです。

そうではなく、--tailオプションを用いて、直近の出力業に限って表示する方が便利でしょう。

kubectl logs --tail 20 $POD_NAME 

logの--followオプション

ログ出力をターミナルにストリームとして流したい場合、--followオプションが活用できます。

kubectl logs --tail 20 --follow $POD_NAME 

このオプションを使用してログ出力することができれば、コンテナからのログ出力がえいえんと出続けます。