【EKS / Kubernetes】Podが起動しない時の調査フロー:Status確認からLogsまで
- POSTS
1. はじめに Kubernetes の運用・保守していると Pod が正常に立ち上がらない問題に遭遇します。
立ち上がらない理由は、多くあると思いますが、初動確認手順は、おおよそ似通っているため、調査手順をまとめてみました。
不具合が起こった時、焦ってしまいますが、ある程度手順を決めておくと冷静に対処できると思います。
1.1. 検証環境について 本記事の動作確認には、ローカル環境で手軽に Kubernetes クラスターを構築できる kind (Kubernetes IN Docker) を使用しています。
2. 全体の調査フロー 異常な Pod を特定する kubectl get pod -A で稼働していない Pod の特定を行う。 Pending, CrashLoopBackOff, ImagePullBackOff など describe でイベントを確認する kubectl describe pod -n logsでコンテナの中を確認 kubectl logs -n 依存リソースも確認 3. 異常な Pod を特定する kubectl get pod -A で全名前空間の Pod を一覧する。 異常なステータスの Pod を特定する。ここでは、error-image-pod の ImagePullBackOff の状態であることがわかります。 kubectl get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE default error-image-pod 0/1 ImagePullBackOff 0 20s kube-system coredns-7d764666f9-54bl2 1/1 Running 0 3m40s kube-system coredns-7d764666f9-kn66c 1/1 Running 0 3m40s kube-system etcd-kind-control-plane 1/1 Running 0 3m46s kube-system kindnet-q75q4 1/1 Running 0 3m40s kube-system kube-apiserver-kind-control-plane 1/1 Running 0 3m46s kube-system kube-controller-manager-kind-control-plane 1/1 Running 0 3m45s kube-system kube-proxy-tw269 1/1 Running 0 3m40s kube-system kube-scheduler-kind-control-plane 1/1 Running 0 3m46s 4. describe でイベントを確認する kubectl describe pod で pod のイベント詳細を確認する。