【Kubernetes】個人的Podデバッグ方法まとめ

2022.10.08
2024.03.24
Kubernetes
Pod

はじめに

KubernetesのPodがうまく動かない時の個人的なデバッグ方法についてまとめます。

これ以外にも思いついたら追記していきたいと思います。

kubectl get pod

Podの状態を確認します。

1kubectl get pod

特に確認するのは下記の項目です。

  • STATUS: ステータスはどうなっているか
  • READY: コンテナは全て起動しているか
  • RESTART: 再起動はしているか

kubectl describe pod

より詳しいPodの状態を確認します。

1kubectl describe pod {pod name}

特に確認するのは下記の項目です。

  • State: どんなステータスか
  • Last State: 前回はどんなステータスだったか
    • Reason: 前回はなぜコンテナが終了したのか
    • Exit Code: 終了した時のexit codeは何だったか
  • Restart Count: コンテナは何回再起動したか
  • Events: Podでどんなことが起きたか

Exit Codeは下記を参考にしてください。

Exit Codes in Docker and Kubernetes: The Complete Guide

Exit Codes in Docker and Kubernetes: The Complete Guide

Everything you need to know about exit codes used by container engines to indicate reasons for container termination.

kubectl logs {pod name}

Podのログを確認します。

1kubectl logs {pod name}

標準出力のログであればこれで確認できます。

kubectl logs -p {pod name}

前回終了したPodのログを確認します。

1kubectl logs -p {pod name}

Podが再起動した場合に、前回起動していたPodのログを確認できます。

kubectl logs {pod nama} -c {container name}

Pod内にコンテナが複数ある場合に特定のコンテナのログを確認します。

1kubectl logs {pod name} -c {container name}

メインとなるコンテナ以外にもコンテナを実行している場合は何か情報が得られるかも知れません。例えば、istio-proxyを入れている場合はトラフィックのログを確認できます。

また、-pオプションと組み合わせて、前回のPodの特定のコンテナのログも確認できます。

1kubectl logs -p {pod name} -c {container name}

kubectl exec {pod name} -- {command}

Podのコンテナでコマンドを実行してみます。

1kubectl exec {pod name} -- {command}

特定のディレクトリを確認したり、標準出力に出していないログのファイルを確認したりと、コンテナ内の状態が想定通りか確認します。

また、下記のようにシェルを実行すれば、コンテナ内で自由にコマンドを実行できます。

1kubectl exec {pod name} -- /bin/bash

kubectl describe quota

リソースクォータを設定している場合はリソースが足りない場合があるので、確認します。

1kubectl describe quota

probeを外す

readinessProbelivenessProbeを設定している場合は、外すことでPodが起動し、何が起きているか調査できるようになることもあります。

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee