0
0

【解決】Windows側のminikubeクラスターにWSL2からアクセスしたい

Last updated at Posted at 2023-12-09

背景

以下のコマンドをコマンドプロンプトから実行し、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を確認してクラスター設定をやり直してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0