背景
以下のコマンドをコマンドプロンプトから実行し、Windows側にノード6つのMinikubeクラスターを作成した。
minikube start --nodes 6
しかしWSL側からkubectl config view
を確認しても当該クラスターの情報が見つからなかった。
アクセスできない原因
kubeconfig(~/.kube/config
)がWindows側とWSL2側で分かれていて、WSL2側に認証情報が含まれていないため。
作業手順
Windows側のkubeconfig(kubectl config view
)の値を参照しながらWSL側のkubectlでkubeconfigを設定していく。
Windows側のkubeconfigの値は以下の通り。
apiVersion: v1
clusters:
- cluster:
certificate-authority: C:\Users\matoruru\.minikube\ca.crt
extensions:
- extension:
last-update: Sat, 09 Dec 2023 09:06:48 JST
provider: minikube.sigs.k8s.io
version: v1.32.0
name: cluster_info
server: https://127.0.0.1:59528
name: minikube
contexts:
- context:
cluster: minikube
extensions:
- extension:
last-update: Sat, 09 Dec 2023 09:06:48 JST
provider: minikube.sigs.k8s.io
version: v1.32.0
name: context_info
namespace: default
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
user:
client-certificate: C:\Users\matoruru\.minikube\profiles\minikube\client.crt
client-key: C:\Users\matoruru\.minikube\profiles\minikube\client.key
この設定値の内、以下の値を確認する。
- clusters[].cluster.certificate-authority (C:\Users\matoruru.minikube\ca.crt)
- clusters[].cluster.server (https://127.0.0.1:59528)
- contexts[].context.cluster (minikube)
- contexts[].context.user (minikube)
- users[].name (minikube)
- users[].user.client-certificate (C:\Users\matoruru.minikube\profiles\minikube\client.crt)
- users[].user.client-key (C:\Users\matoruru.minikube\profiles\minikube\client.key)
これらの値を使って以下のコマンドを実行する(WindowsのパスC:\
をWSLのパス/mnt/c/
に置き換えている点に注意)。
ユーザ設定
kubectl config set-credentials minikube --client-certificate /mnt/c/Users/matoruru/.minikube/profiles/minikube/client.crt --client-key /mnt/c/Users/matoruru/.minikube/profiles/minikube/client.key
クラスタ設定
kubectl config set-cluster minikube --certificate-authority /mnt/c/Users/matoruru/.minikube/ca.crt --server https://127.0.0.1:59528
コンテキスト設定
kubectl config set-context minikube --cluster minikube --user minikube
最後に、以下のコマンドで現在のコンテキストを設定しなおしてノード情報を確認してみます。
> kubectl config use-context minikube
Switched to context "minikube".
> kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 7h48m v1.28.3
minikube-m02 Ready <none> 7h47m v1.28.3
minikube-m03 Ready <none> 7h46m v1.28.3
minikube-m04 Ready <none> 7h46m v1.28.3
minikube-m05 Ready <none> 7h45m v1.28.3
minikube-m06 Ready <none> 7h45m v1.28.3
アクセス設定完了です!今後はWSL2側のkubectl
コマンドからWindows側のクラスターを操作できます。
補足
minikubeの再起動後に再度WSL側からアクセスできなくなることがあります。この場合はminikubeクラスターのIPが変更されているので、もう一度Windows側のkubeconfigを確認してクラスター設定をやり直してみてください。