Minikube で 404 エラーが出た場合、指定した Kubernetes リソースが見つからないことを示しています。このエラーは開発環境でよく発生し、適切な確認手順で迅速に解決できます。
よくある原因
Namespace の指定が間違っているか省略されている
Kubernetes ではリソースは必ず Namespace 内に存在します。kubectl get pod のように Namespace を指定せずコマンドを実行すると、デフォルトの default Namespace のみを検索します。リソースが別の Namespace に存在する場合、404 エラーが返されます。例えば kube-system Namespace にあるシステムポッドは、Namespace 指定なしでは見つかりません。
リソースがまだデプロイされていないか削除されている
Deployment やポッドの作成コマンドを実行しても、イメージのダウンロードやスケジューリングに時間がかかります。その間に kubectl get pod <pod-name> を実行すると 404 になります。また、明示的に削除したリソースや、前回のセッションで作成したリソースも見つかりません。
Minikube クラスターが停止している
Minikube クラスターが停止している状態では、すべての Kubernetes API のリクエストが失敗し、404 を含むエラーが返されます。クラスターが起動していても、kube-apiserver などのコアコンポーネントが正常に動作していない場合も同様です。
解決手順
ステップ 1:Minikube クラスターの状態を確認する
まず最初にクラスター全体が正常に起動しているか確認します。
minikube status
以下の出力が目標です。
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
クラスターが停止している場合は起動します。
minikube start
ステップ 2:Namespace 全体でリソースを検索する
次に、すべての Namespace 横断でリソースが実在するか確認します。-A フラグは全 Namespace 対象を意味します。
kubectl get pod -A
もしリソース名が分からない場合は、以下で全リソースを表示できます。
kubectl get all -A
特定のリソースタイプを検索する場合は、以下のように置き換えます。
kubectl get deployment -A
kubectl get service -A
kubectl get pvc -A
ステップ 3:正しい Namespace を指定してアクセスする
リソースが見つかった場合、その Namespace を指定して詳細を確認します。
kubectl describe pod <pod-name> -n <namespace-name>
例えば kube-system Namespace 内の etcd ポッドを確認する場合:
kubectl describe pod etcd-minikube -n kube-system
ステップ 4:デプロイ失敗の原因を調査する
リソースが見つからない場合、デプロイが失敗している可能性があります。イベントログを確認します。
kubectl get events -A
特定の Namespace 内のイベントのみを表示する場合:
kubectl get events -n <namespace-name>
より詳細な情報を見る場合:
kubectl describe deployment <deployment-name> -n <namespace-name>
このコマンドで Status や Conditions を確認し、PullImageError や ImagePullBackOff など、デプロイ失敗の理由が表示されます。
ステップ 5:リソース定義ファイルを再確認する
YAML ファイルの Namespace 指定が正しいか確認します。
apiVersion: v1
kind: Pod
metadata:
name: sample-pod
namespace: default # ここが正しい Namespace か確認
spec:
containers:
- name: nginx
image: nginx:latest
Namespace 指定がない場合は default Namespace が使用されます。指定した Namespace に合わせて統一します。
それでも解決しない場合
Minikube のログを確認することで、クラスターレベルの問題を特定できます。
minikube logs
クラスターをリセットして初期化する方法もあります。ただし既存のリソースがすべて削除されるため、慎重に実行してください。
minikube delete
minikube start
また、Minikube のバージョンが古い場合は更新も検討してください。
minikube version
免責事項:本記事の内容は、執筆時点の公開情報をもとに作成したものです。ソフトウェアの仕様は予告なく変更されることがあります。最新の情報は各ツールの公式サポートページをご確認ください。本記事の情報を利用した結果生じたいかなる損害についても、著者および運営者は責任を負いかねます。