LoginSignup
1
1

More than 3 years have passed since last update.

kubectlがWSL上で実行できない

Last updated at Posted at 2020-12-16

WSLの環境に 公式リファレンス を見ながらkubectlをインストールしてウキウキしながらコマンドを実行したのですが、下記のようなエラーが発生してしょんぼりしてしまいました。

$ kubectl get pod
The connection to the server localhost:8080 was refused - did you specify the right host or port?

そのため、kubectlが実行できず悩んでいたのですが、解決策が見つかったので備忘録として残しておきます。

実行環境

  • WSL
    • Ubutu 20.04 LTS
  • Azure Kubernetes Service
    • Kubernetesのバージョン 1.15.10
    • サポート対象外だからバージョン上げろ

TL;DR

環境変数で KUBECONFIG がちゃんと設定されていないことが原因でした。

解決策

なんか色々探しているうちに「kubectlの接続設定を見ろ」っていう記事が多かったので、コマンドで確認しました。

$ kubectl config view
apiVersion: v1
clusters: null
contexts: null
current-context: ""
kind: Config
preferences: {}
users: null

空じゃん。。。

az aks get-credentials で接続情報を取得してファイルに格納しているのになんでだ?」と思ったので、そのコマンドの実行結果を見てみました。

$ az aks get-credentials --subscription {{サブスクリプションID}} --resource-group {{リソースグループ}} --name {{リソース名}}
Merged "{{リソース名}}" as current context in C:\Users\{{ユーザー名}}\.kube\config

WSLからWindowsのCドライブにアクセスするときは /mnt/c でアクセスしなきゃいけないはずが、 C:\ でアクセスしていて、ファイルに設定を書き込めていなかったことが原因っぽいです。(これWindowsのパス表記じゃん?)

試しに kubectl config view --kubeconfig /mnt/c/Users/{{ユーザー名}}/.kube/config で接続設定がちゃんと格納されているか見たら、それらしい接続方法が書いてありました。

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
...

そのため、接続設定のファイルがどこにあるかをちゃんと環境変数を設定してあげました。

$ echo 'export KUBECONFIG="/mnt/c/Users/{{ユーザー名}}/.kube/config"' >> ~/.bashrc
$ source ~/.bashrc
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
...

できたーーー!

1
1
2

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
1
1