🤦‍♀️

kindで作ったKubernetesクラスタに接続できない時の対処法

2023/12/29に公開

実行環境

WSLのUbuntu上でkindを使ってKubernetesクラスタを作成したのですが、kubectlコマンド実行時に The connection to the server <IP>:32769 was refused - did you specify the right host or port?というエラーが出てしまいました。

結論

kubeconfigファイルの設定値がおかしかったです。kindではkind create clusterコマンドを実行するとKubernetesクラスタに接続するための認証情報などがデフォルトで~/.kube/configファイルに格納されるのですが、自分の環境ではminikubeも使用していたせいか以下のようにminikubeの認証情報が残っており、kindのものに更新されていないようでした。

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /hogehoge
    extensions:
    - extension:
        last-update: Wed, 16 Aug 2023 08:37:37 JST
        provider: minikube.sigs.k8s.io
        version: v1.31.1
      name: cluster_info
    server: https://<IP>:32769
  name: minikube
contexts:
- context:
    cluster: ""
    user: ""
  name: kind-kind
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Wed, 16 Aug 2023 08:37:37 JST
        provider: minikube.sigs.k8s.io
        version: v1.31.1
      name: context_info
    namespace: default
    user: minikube
  name: minikube
current-context: kind-kind
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /hogehoge/client.crt
    client-key: /hogehoge/client.key

ということで一度このファイルを削除し、以下のコマンドを実行してkubeconfigファイルを更新します。

sudo kind get kubeconfig > ~/.kube/config

すると、以下のようにkubeconfigファイルが更新されます。

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://<IP>:46509
  name: kind-kind
contexts:
- context:
    cluster: kind-kind
    user: kind-kind
  name: kind-kind
current-context: kind-kind
kind: Config
preferences: {}
users:
- name: kind-kind
  user:
    client-certificate-data: DATA+OMITTED
    client-key-data: DATA+OMITTED

この状態でkubectlコマンドを実行すると、以下のようにクラスタへの接続が確認できました。

Kubernetes control plane is running at https://<IP>:46509
CoreDNS is running at https://<IP>:46509/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

参考

No context found by kubectl when starting cluster with kind create cluster · Issue #2174 · kubernetes-sigs/kind
https://github.com/kubernetes-sigs/kind/issues/2174

Discussion