kubectlログ-継続的に


99
kubectl logs <pod-id>

デプロイメントから最新のログを取得します-バグに取り組んでおり、実行時にログを知りたいと思っています-ログの継続的なストリームを取得するにはどうすればよいですか?

編集:最後の質問を修正しました。

回答:


174
kubectl logs -f <pod-id>

-fフラグを使用できます:

-f, --follow=false: Specify if the logs should be streamed.

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs


サービスのログやポッド以外のものはどうですか?
アレクサンダーミルズ

4
これは短時間機能し、その後ログが停止します。kubectlを終了するには、ctrl-cを実行してから、再起動する必要があります。これにより、後にさらにログが表示されますが、再び停止します。ログが明らかにポッドによって生成されているのに、ログがランダムな場所で停止する理由を知っている人はいますか?
pferrel

20

kubectl logs --help あなたを導きます:

例:

# Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1

フラグ:

-f, --follow[=false]: Specify if the logs should be streamed.

また--since=10m、その相対的な時間前から追加することもできます。


ポッドに複数のコンテナを含めることはできますか?
アレクサンダーミルズ

@AlexanderMillsはい、これは「サイドカー」パターン
grokpot

6

長時間実行されているポッドのログにアクセスする必要があり、-f数日前からログのストリーミングを開始しました。これは、表示する必要のある場所に到達するまでに数時間かかりました(最後の数分程度)。

--since=10m旗がありますが、それは私にはうまくいかなかったようです。

驚いたのは--tail=100100表示する最近の行数はどこですか。


4

kubesがポッドをスピンアップするのを待ってから次に進みます...

k8s_pod=some_pod
kubectl get pods -w $k8s_pod | while read LOGLINE
do
   [[ "${LOGLINE}" == *"Running"* ]] && pkill -P $$ kubectl
done

テールログ

for line in $(kubectl get pods | grep $k8s_pod | awk '{print $1}'); do
    kubectl logs -f $line | tee logfile
done

成功の指標を探す

tail logfile | grep successful! 
RESULT=$?
exit $RESULT

「成功しました!」ポッドによっては変更が必要な場合があります。
ddtraveller 2018年

私は他のいくつかのstackoverflow投稿から最初の2つの部分を取り出したので、それらを完全に信用することはできませんが、コンボが他の人に役立つことを願っています...
ddtraveller 2018年

4

マルチポッドアプリからログのストリームを取得する場合は、kubetailを使用できます。例:

kubectl get pods

NAME                   READY     STATUS    RESTARTS   AGE
app2-v31-9pbpn         1/1       Running   0          1d
app2-v31-q74wg         1/1       Running   0          1d

kubetail app2

このコマンドを使用すると、kubetailがされテーリングポッドからログをAPP2-v31-9pbpn APP2-V31-q74wg


1

これを試して、

ポッドからのテールログ

kubectl --tail <"no oflines">ログ<"pod_name">

kubectl --tail100ログapp_pod


0

kubctlログ-f = true [ポッド名] -c [コンテナ名]

ポッド上にコンテナが1つしかない場合は、コンテナ名は必要ありません。それ以外の場合は、-cオプションを指定してコンテナ名を使用します。-fすなわちfollowはデフォルトでfalseです。trueに設定しないと、コンテナログのスナップショットが取得されます。


0

-fを使用してログを追跡できます

kubectl logs -f <pod_name>

ログが停止している可能性が高い場合は、ポッドがクラッシュしています。ポッドが実際に実行されているかどうかを確認できますか?多分年齢を確認するか:

kubectl describe deploy/ds <deploy_or_ds_name>?

または、複数のコンテナがあるポッド内のコンテナのログを確認することもできます

kubectl -f <pod_name> -c <container_name> 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.