Minikubeへの認証に失敗して401エラーが発生します。このエラーは kubeconfig の設定が Minikube クラスターと一致していない場合に起こります。
よくある原因
kubeconfig のクラスター設定が古くなっているまたは誤っている
kubeconfig ファイルに保存されている Minikube クラスターの接続情報(API サーバーのアドレスや認証トークン)が、現在の Minikube の状態と一致していません。これは kubeconfig を手動編集したり、環境が予期せず変更されたりすることで発生します。
Minikube を再起動したことで証明書が変わった
Minikube を停止して再起動すると、クラスターの認証に使う証明書が更新される場合があります。古い証明書情報が kubeconfig に残ったまま、新しい証明書を持つクラスターにアクセスしようとするため、認証が失敗します。
kubectl が別のクラスターのコンテキストを使っている
複数の Kubernetes クラスターを管理している場合、kubeconfig に複数のコンテキスト(クラスター接続設定)が存在します。kubectl が誤って Minikube 以外のクラスターに接続しようとすると、そのクラスターの認証情報を用いて 401 エラーが発生します。
解決手順
ステップ1:kubeconfig を Minikube の現在の設定で更新する
以下のコマンドを実行してください:
minikube update-context
このコマンドは Minikube クラスターの現在の認証情報と接続先を読み取り、kubeconfig ファイル(通常は ~/.kube/config)を自動的に更新します。証明書や API サーバーのアドレスが最新の状態に修正されます。
ステップ2:kubectl のコンテキストを Minikube に切り替える
現在使用しているコンテキストを確認します:
kubectl config current-context
以下のコマンドで Minikube コンテキストに切り替えます:
kubectl config use-context minikube
これにより、以降の kubectl 操作は Minikube クラスターに対して実行されます。現在のコンテキストを再確認して、minikube と表示されることを確認してください:
kubectl config current-context
ステップ3:Minikube クラスターを再起動する
上記の手順でも 401 エラーが続く場合、Minikube クラスター自体を再起動してください:
minikube stop
minikube start
minikube stop でクラスターを停止し、minikube start で再起動します。この過程で証明書が更新され、kubeconfig も自動的に再設定されます。再起動後、kubectl が正常に動作することを確認します:
kubectl cluster-info
クラスター情報が表示されれば、認証が成功しています。
それでも解決しない場合
kubeconfig ファイルを一度削除して、Minikube から再生成することを試してください:
rm ~/.kube/config
minikube start
Minikube が起動する際に新しい kubeconfig ファイルが自動生成されます。ただし、他の Kubernetes クラスターの設定情報が失われるため、複数クラスターを管理している場合は事前にバックアップを取ってください。
また、Minikube のバージョンが古い場合、認証方式の変更に対応していない可能性があります。以下のコマンドでアップグレードを確認してください:
minikube update-check
または Minikube を再作成します:
minikube delete
minikube start
それでも解決しない場合は、kubeconfig ファイルを確認し、認証情報(client-certificate、client-key など)が正しく設定されているか、ファイルのパスが存在するかを確認してください。
免責事項:本記事の内容は、執筆時点の公開情報をもとに作成したものです。ソフトウェアの仕様は予告なく変更されることがあります。最新の情報は各ツールの公式サポートページをご確認ください。本記事の情報を利用した結果生じたいかなる損害についても、著者および運営者は責任を負いかねます。