【k8s】Kubernetes ~ トラブルシュート方法 ~

◾️はじめに

以下の「つくって、壊して、直して学ぶ Kubernetes入門」の
トラブルシュート方法を学べたので、自分なりにまとめておく

目次

【0】トラブルシュートで役立つコマンド
【1】「kubectl get pod」で確認
【2】「kubectl get pod」の各Statusで次に行うこと
 1)CrashLoopBackOff の場合
 2)ImagePullBackOff の場合
 3)Pending の場合
 4)Running の場合

【0】トラブルシュートで役立つコマンド

* kubuctlコマンドの詳細については、以下の関連記事を参照のこと

kubectlコマンド ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/01/12/110555

【1】「kubectl get pod」で確認

* まず意図した動作をしていない場合は、「kubectl get pod」を実行する

「kubectl get pod」でStatusはどうなっているか?

Status Next Action
CrashLoopBackOff 【2】「1)CrashLoopBackOff の場合」を参照
ImagePullBackOff 【2】「2)ImagePullBackOff の場合」を参照
Pending 【2】「3)Pending の場合」を参照
Running 【2】「4)Running の場合」を参照
OOMKilled コンテナ内のOut of Memoryなのでメモリ増強を考える

【2】「kubectl get pod」の各Statusで次に行うこと

1)CrashLoopBackOff の場合

* コンテナのログを参照する

コンテナのログを参照し、エラーログがあるかどうか?

Answer Actions
エラーがある そのエラーを潰していく
エラーがない LivenessProbeの設定を見直す

2)ImagePullBackOff の場合

* 以下を順次確認する

[1] イメージ名があっているか => OKだったら[2]
[2] タグ名があっているか => OKだったら[3]
[3] プライベートリポジトリの場合、リポジトリ権限に問題がないか確認する

3)Pending の場合

* 「kubectl describe pod <POD_NAME>」でEventsに書かれている内容を確認する

4)Running の場合

[1] Pod内のコンテナは全てReadyかどうか?

Answer Next Actions
YES 「kubectl describe pod <POD_NAME>」でReadiness Probe/Liveness Probeで成功しているか確認し、成功していれば、Probeを見直す
NO 『 [2] 「kubectl logs <POD_NAME>」でエラーがあるか?』へ移行

[2] 「kubectl logs <POD_NAME>」でエラーがあるか?

Answer Next Actions
YES エラーをつぶす(アプリを見直す)
NO 『 [3] 「kubectl logs <POD_NAME>」でエラーがあるか?』へ移行

[3] 「kubectl describe [SERVICE_NAME] 」でEndpoint一覧が見えているか?

Answer Next Actions
YES kubectl port-forward service/[SERVICE_NAME]8080:でアプリにアクセスできなければ、ServiceのTargetPortとコンテナ番号が間違っている可能性があるので確認する
NO ServiceのSelectorが間違っている可能性があるので確認する

関連記事

KubernetesWindows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/05/01/000000
KubernetesLinux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2024/01/02/005053
Kubernetes ~ MicroK8s / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2024/03/10/230329
Kubernetes ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/27/224624
Kubernetes ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/04/013529
KubernetesKubernetes Dashboard
https://dk521123.hatenablog.com/entry/2023/05/27/144144
Kubernetes ~ 基本編 / Pod ~
https://dk521123.hatenablog.com/entry/2024/03/16/111336
Kubernetes ~ 基本編 / minikube ~
https://dk521123.hatenablog.com/entry/2023/05/07/214515
Kubernetes ~ 基本編 / kubeconfigファイル ~
https://dk521123.hatenablog.com/entry/2023/05/24/211803
Kubernetes ~ 基本編 / Helm ~
https://dk521123.hatenablog.com/entry/2023/05/11/000840
kubectlコマンド ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/01/12/110555
Amazon EKS ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/02/23/000000
Kubernetes / minikube に関するトラブル
https://dk521123.hatenablog.com/entry/2024/10/24/210338