GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Kubectlを使用してKubernetesポッドログを表示する方法

ポッドログの表示は、多くの場合、クラスターのワークロードの問題を診断するための最初のステップです。 Kubectlを使用してログを端末にライブストリーミングし、アプリケーションからの出力を検査できるようにする方法は次のとおりです。

はじめに

Kubectlがインストールされ、クラスターに接続されていることを確認してください。 KUBECONFIG を設定することにより、Kubeconfigファイルを指定できます。 シェルの環境変数:

export KUBECONFIG=~/.kube/my-cluster.yaml

次に、Kubectlを使用してポッドを一覧表示します:

kubectl get pods

-namespaceを追加することを忘れないでください ポッドがデフォルトの名前空間の外にある場合のフラグ:

kubectl --namespace my-namespace get pods

シェルに一時的なエイリアスを追加することは、この手順を短縮するための良い方法であり、同じ名前空間に対して複数のコマンドを実行するのに役立ちます。

alias k="kubectl --namespace my-namespace"

k get pods
ポッドログへのアクセス

kubectlログ コマンドを使用すると、名前付きポッドによって生成されたログを検査できます:

kubectl logs pod-name

ポッドの既存のログが端末に送信されます。ポッドが複数のコンテナから形成されている場合は、検査するコンテナの名前も指定する必要があります。

kubectl logs pod-name container-name

または、-all-containersを設定します ポッド内の任意のコンテナによって生成されたログ行を含めるフラグ。ビジーなポッドに対してこのフラグを使用すると、冗長で反復的な出力が表示される可能性があることに注意してください。

kubectl logs pod-name --all-containers

また、特定のラベルが付いたポッドのセットからログを取得することもできます。これにより、すべてのポッドが同じラベルを共有している場合、異なるポッドからのログを集約できます。

kubectl logs -l my-label=my-value --all-containers
継続的にログをストリーミングする

プレーンなログ コマンドは、現在保存されているポッドログを出力して終了します。 -fを追加します (-フォロー )コマンドにフラグを立ててログを追跡し、端末にライブストリーミングします。

Ctrl + Cでコマンドを停止するまで、Kubectlは新しいログ行を端末に出力します。これは、 tail -fを使用するのと同じです。 コンテナ化されていない環境でローカルログファイルを使用します。

古いログの表示

kubectlログ かつてポッドメンバーだったが、その後交換された古いコンテナによって生成されたログ行は含まれません。これらのログにアクセスするには、 -pを追加します (-前へ )フラグ。

その後、Kubectlは、ポッドの保存されたログ全体を表示します。これには、その後終了したコンテナによって発行された行も含まれます。

最近のログの取得

ログストリーム全体を表示する必要がない場合もあります。 Kubectlは--sinceをサポートしています 一定時間後に放出されたログラインを表示するフラグ:

kubectl logs pod-name --since=2h

このコマンドは、 pod-nameからのログ出力を表示します 過去2時間以内に作成されました。もう1つのバリエーション、-since-time 、上記の相対時間式の代わりに、RFC3339準拠のタイムスタンプ文字列をサポートします。

-tail フラグは、ログを凝縮するためのもう1つのオプションです。これにより、表示される行数が制限され、ごく最近の出力のみを表示する必要がある場合に端末がいっぱいになるのを回避できます。

# Shows the last 10 lines of the log
kubectl logs pod-name --tail=10

多くのアプリケーションがすでにログ出力にラインタイムスタンプを含めているため、Kubectlはデフォルトでラインタイムスタンプを表示しません。 -timestampsを追加します ワークロードでタイムスタンプが提供されない場合に、Kubectlが行頭にタイムスタンプを追加するようにフラグを立てます。

検査したポッドとコンテナの名前をログ行に追加することもできます。この機能は、-prefixでアクティブ化されます 国旗。 -timestampsと組み合わせることができます 各行が作成された時刻とその元のソースを表示します。

他のリソースタイプからのログへのアクセス

kubectlログ ポッドに加えて、展開およびジョブリソースと連携します:

kubectl logs job/my-job
kubectl logs deployment/my-deployment

ジョブまたはデプロイメント内の最初のコンテナからログを取得します。 -all-containersを使用します 一致するコンテナのいずれかによって作成されたログを表示するためのフラグ。ポッド、デプロイメント、ジョブのいずれを表示していても、上記のすべてのフラグを使用できます。

より高度なログ管理

Kubectlには、ログをフィルタリング、検索、または変換する方法は含まれていません。 kubectlログをパイプするのが最善です awkなどの確立されたターミナルツールに出力します 、 grep またはsed この目的のために。

kubectl logs my-pod | grep search-expression

同様に、シェルの既存のリダイレクト機能を使用して、ログをファイルに保存します。

kubectl logs my-pod > my-pod-logs.txt
概要

Kubectlを使用すると、コンテナーごとまたは集合的に、リソースからログにアクセスできます。現在収集されているログのスナップショットを表示したり、端末に新しい回線を継続的にストリーミングしたり、終了したコンテナによって放出された履歴回線にアクセスしたりできます。

このコマンドには、行数リミッターや単純な日付フィルタリングなど、いくつかの制限されたカスタマイズオプションが付属しています。より要求の厳しい解析が必要な場合は、出力をUnixターミナルコマンドにパイプして、ログを迅速に分析し、アプリケーションのエラーの原因を見つけます。

Kubectlは、コンテナの標準出力およびエラーストリームからログを収集します。 kubectl logs を実行すると、コンテナの設定が誤っていると出力が空になるため、これらのストリームに出力を正しく書き込むことが重要です。 。


Docker
  1. Ubuntu20.04にMinikubeを使用してKubernetesをインストールする方法

  2. Kubernetesポッドとマシン間でファイルをコピーする方法

  3. root として Pod に入るには?

  1. Apacheアクセスおよびエラーログを表示する方法

  2. Linuxログファイルを表示および読み取る方法

  3. Linux で sar を使用して過去のパフォーマンスを表示する方法

  1. Kubernetesの自己署名証明書を生成する方法

  2. Rancherを使用してKubernetesクラスターをセットアップする方法

  3. KubernetesにRedisクラスターをデプロイする方法