ポッドがうまく動作しないときのコマンドまとめ
はじめに
くーばねてすを倒すために今回はkubernetesでポッドがうまく動作しないときのコマンドをまとめた!(^^)!。
概要
■ポッドがうまく動作しないときのコマンド
をまとめた!(^^)!
■ポッドがうまく動作しないときのコマンド
ポッドが起動しない
ポッドのイベントを確認する。
$ kubectl get events
特定のポッドのイベントを取得したいときは、grepコマンドを使う。
$ kubectl get events | grep ポッド名
ポッドがリスタートを繰り返す
ポッドがContainerCreating → Error → CrashLoopBackOff を繰り返し、ポッドが起動できない。
↓
Exit Codeを確認する。
$ kubectl describe po ポッド名
Exit Codeが1なら異常終了。0なら正常終了である。
Exit Codeが1なら異常終了の原因を探るため、ログの確認をする。
$ kubectl logs -f ポッド名
ポッドの開始に失敗する
ポッドが RunContainerError → CrashLoopBackOff を繰り返す。
$ kubectl discribe po ポッド名
でポッドの終了理由を確認する。"Message"などにも書いてある。
アプリケーションが実行中に異常終了してしまう
正常に稼働していたポッドが異常終了してしまう場合は、ポッドのログを確認して原因をみていく。
$ kubectl logs -f ポッド名
ログがわからなくて確認できない場合は、アプリケーションの実行をコマンドでオーバーライドして待機状態で起動し、対話型でポッドを起動してシェルからエラーメッセージを確認する。
起動するマニフェストのコンテナの設定項目"command"を tail -f ファイルパス でログをリアルタイムで表示するコマンドに設定し、
command: ["tail" ,"-f","/dev/null"]
ログをリアルタイムで出力し、エラーメッセージを確認する。
そのために起動したポッドにシェルではいり、エラーメッセージを確認する。
$ kubectl exec -it ポッド名 bash
ほかのポッドに設定したラベルの重複が疑われる時
サービスにアクセスして、想定外の応答が返ってくるときなど。
ポッドをラベル付きで一覧表示する。
$ kubectl get po --show-labels=true
ラベル付きで一覧表示するとラベルの重複を確認できる。ラベルがほかのポッドと重複してしまうと想定外の動きをすることもあるのでラベルは重複しないように気を付ける。
ラベルを指定してポッドを一覧表示するときは
$ kubectl get po --selector='キー=バリュー'
まとめ
いろんな方法でポッドの異常を確認できたらいいなと思った(>_<)
Discussion