Minikubeでクラスター内部の予期しないエラーが発生し、HTTP ステータス 500 が返されている状況です。API サーバーの不安定性やリソース枯渇が主な原因となります。

よくある原因

API サーバーのクラッシュ

Minikube のノード内部で動作する Kubernetes の API サーバーが予期せず停止している状態です。メモリ不足や CPU リソースの枯渇により、API サーバープロセスが OOM Killer によって強制終了されたり、無限ループに陥ったりすることで発生します。この場合、クラスターへのすべての API 呼び出しが 500 エラーで応答するようになります。

ディスク容量不足による etcd の破損

Minikube が使用するディスク容量が枯渇すると、Kubernetes の状態管理を担当する etcd(分散キーバリューストア)のデータが正常に書き込まれなくなります。破損したデータベースの読み込みに失敗するため、API サーバーが正常に起動できず、すべてのリクエストで 500 エラーを返すようになります。

Minikube と kubectl のバージョン互換性の不一致

Minikube クラスター内の Kubernetes バージョンと、ローカルにインストールされている kubectl のバージョンが大きく異なる場合、API の仕様変更により通信がうまく成立しません。特に kubectl が新しすぎる場合、古い API バージョンを呼び出そうとしてサーバー側で予期しないエラーが発生します。

解決手順

ステップ1:クラスターのログを確認する

まず Minikube の内部ログを確認し、API サーバーがクラッシュしている、またはディスク容量が不足していないかを調査します。

minikube logs

出力を確認し、「Out of memory」や「No space left on device」といったメッセージがないか探します。API サーバーのクラッシュログが表示されていれば、原因がより明確になります。

ステップ2:バージョンの互換性を確認する

Minikube と kubectl のバージョンを確認し、互換性が保たれているか検証します。

minikube version
kubectl version --client

一般的に Minikube と kubectl のマイナーバージョン(例えば 1.28 と 1.29)が 1 つ以上ずれている場合、互換性の問題が生じる可能性があります。

ステップ3:クラスターをリセットする

ステップ1と2で明らかな問題が見つからない場合、またはディスク容量不足が原因と疑われる場合は、クラスターを完全にリセットします。

minikube delete
minikube start

minikube delete でクラスター全体を削除し、その後 minikube start で新規に立ち上げます。この操作で etcd のデータベースが初期化され、ディスク容量の問題も解決します。

ステップ4:kubectl のバージョンを合わせる

バージョン不一致が確認された場合、kubectl を最新版に更新するか、Minikube のバージョンを上げます。

# kubectlを最新版に更新する場合
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# または Minikubeを最新版に更新する場合
minikube update-check

ステップ5:クラスターの動作確認

リセット後、クラスターが正常に動作しているか確認します。

kubectl get nodes
kubectl cluster-info

両方のコマンドでエラーが返されず、ノード情報とクラスター情報が表示されれば、500 エラーは解決しています。

それでも解決しない場合

Minikube のドライバーが破損している可能性があります。使用中のドライバー(Docker、VirtualBox、KVM など)の設定をリセットし、別のドライバーで起動を試みます。

minikube delete --all
minikube start --driver=docker

ローカルマシンのリソース(メモリやストレージ)が極端に少ない場合は、Minikube に割り当てるリソースを明示的に増やして起動します。

minikube start --memory=4096 --cpus=4

それでも問題が解決しない場合は、Minikube の公式 GitHub の issue ページで既知の問題がないか確認し、必要に応じてバグレポートを提出してください。


免責事項:本記事の内容は、執筆時点の公開情報をもとに作成したものです。ソフトウェアの仕様は予告なく変更されることがあります。最新の情報は各ツールの公式サポートページをご確認ください。本記事の情報を利用した結果生じたいかなる損害についても、著者および運営者は責任を負いかねます。