Minikubeでサービスにアクセスしたときに503エラーが返される場合、クラスター自体が正常に動作していないか、デプロイしたサービスが停止している状態です。この記事では、原因の特定方法と解決手順を説明します。
よくある原因
Minikubeが停止または起動中の状態
Minikubeクラスターが完全に起動していないか、停止している場合、すべてのサービスへのリクエストが503エラーになります。起動処理が途中で止まっているケースもあり、この場合はクラスターが部分的にしか動作していないため、一部のサービスだけが利用できなくなります。
Podがクラッシュループに陥っている
デプロイしたPodがコンテナーの起動に失敗し、再起動を繰り返すクラッシュループ状態に陥ると、そのPod内で動作するサービスは利用できず503エラーが返されます。これはアプリケーションのバグ、設定ファイルの誤り、環境変数の不足などが原因で発生します。
リソース不足
Minikubeに割り当てたCPUやメモリが不足すると、Podが正常に起動できなくなり、サービスが停止します。特にメモリ不足でPodが強制終了された場合、リクエストを処理するリソースがないため503エラーが返されます。
解決手順
1. クラスターの状態を確認する
まずMinikubeが正常に動作しているか確認します。
minikube status
出力例:
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
すべてが「Running」になっていることを確認してください。もし「Stopped」と表示される場合は、以下のコマンドで起動します。
minikube start
起動処理には数分かかります。完了後、再度 minikube status で確認してください。
2. Podの状態を確認する
クラスターが起動している場合、次にデプロイしたPodの状態を確認します。
kubectl get pods -A
出力例:
NAMESPACE NAME READY STATUS
default my-app-deployment-5d4f8c9b2 1/1 Running
kube-system coredns-558bd4d5ec-abc12 1/1 Running
「CrashLoopBackOff」または「ImagePullBackOff」というステータスのPodがないか確認してください。問題のあるPodが見つかった場合、詳細情報を取得します。
kubectl describe pod <pod-name> -n <namespace>
例:
kubectl describe pod my-app-deployment-5d4f8c9b2 -n default
出力の「Events」セクションにエラー内容が表示されます。ログを確認する場合は以下を実行します。
kubectl logs <pod-name> -n <namespace>
3. リソースを増やして再起動する
メモリやCPUが不足している場合、Minikubeに割り当てるリソースを増やします。
minikube config set memory 4096
minikube config set cpus 2
その後、Minikubeを再起動します。
minikube stop
minikube start
再起動後、Podが正常に起動したか確認します。
kubectl get pods -A
すべてのPodが「Running」ステータスになれば、503エラーは解消されます。
それでも解決しない場合
Podのログに明確なエラーメッセージがある場合は、そのメッセージに応じてアプリケーション側の設定を修正してください。デプロイメントの定義ファイル(YAML)で環境変数やイメージ名に誤りがないか確認し、修正後に kubectl apply -f deployment.yaml で再デプロイしてください。
Minikubeをクリーンアップして完全にリセットしたい場合は、以下を実行します。
minikube delete
minikube start
ただしこの操作ですべてのPodと設定が削除されるため、本番環境で使用する場合は実施しないでください。
免責事項:本記事の内容は、執筆時点の公開情報をもとに作成したものです。ソフトウェアの仕様は予告なく変更されることがあります。最新の情報は各ツールの公式サポートページをご確認ください。本記事の情報を利用した結果生じたいかなる損害についても、著者および運営者は責任を負いかねます。