Minikube の 400 エラー:原因と解決策400
Minikubeクラスターへのリクエスト形式が正しくなく、マニフェストのYAML構文エラーやオプション指定の誤りが原因で発生するエラーです。本記事では原因特定と解決方法をステップバイステップで解説します。 よくある原因 kubectl applyするマニフェストのYAMLに構文エラーがある YAMLはインデント(スペース数)に厳密です。タブ文字を使ったり、インデント幅が不統一だったりすると、Minikubeはリクエストを正しく解析できず400エラーが発生します。また、コロン(:)やハイフン(-)の位置がズレていても同様です。例えば kind: Pod と kind:Pod では後者が構文エラーになります。 必須フィールドが欠けているか型が間違っている Kubernetesリソースには必ず指定する必須フィールドがあります。Deploymentなら apiVersion、kind、metadata、spec は必須です。また replicas は整数型なのに文字列 "3" で指定したり、ports の containerPort に文字列を指定すると、Minikubeが型の不一致を検出して400エラーを返します。 minikubeコマンドのオプション指定が誤っている minikube start --vm-driver=docker のように廃止されたオプションを使ったり、オプションの形式が間違っていたりすると400エラーが発生します。バージョンアップに伴いオプション名が変更されることもあるため、使用しているMinikubeバージョンに対応したオプションを確認する必要があります。 解決手順 1. マニフェストをdry-runで事前確認する マニフェストファイルを実際に適用する前に、構文エラーと必須フィールドの不足を検出します。 kubectl apply --dry-run=client -f <マニフェスト.yaml> 例えば以下のコマンドを実行します。 kubectl apply --dry-run=client -f deployment.yaml 出力にエラーメッセージが表示されれば、その箇所を修正してください。成功時は deployment.apps/example created (dry run) と表示されます。 2. マニフェストのYAML構文をチェックする YAMLの妥当性を検証するオンラインツール(例:yamllint)を使うか、ローカルでlintツールを実行します。 # yamllintをインストール pip install yamllint # マニフェストをチェック yamllint deployment.yaml インデント幅は通常2スペースか4スペースで統一してください。タブ文字は使わないようにします。 3. 正しいオプションをminikube –helpで確認する 使用しているMinikubeのバージョンで有効なオプションを確認します。 minikube start --help 出力例から、現在有効なオプションを確認してください。例えば --vm-driver は古いバージョンのMinikubeでは --driver に変更されています。 ...