LoginSignup
27
20

More than 3 years have passed since last update.

kubectlでThe connection to the server [IP]:[PORT] was refusedになったときの対処

Posted at

TL;DR

  1. kubectl get podsで表題のエラーが帰ってくる場合は接続先の指定が誤っている
  2. 指定している接続先はkubectl config viewclusters > cluster > serverで確認できる
  3. 接続先の指定はkubectl config set-cluster [cluster-name] --server=https://[IP]:[PORT]で書き換えられる

発生した事象

localでdocker-for-macを利用してKubernetesを動かしていたのですが、気がつくとkubectl get nodesで次のエラーを返すようになってしまっていました。

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

また、 kubectl describe nodesでもサーバーに接続されない旨のエラーが帰ってきてしまい、原因がすぐにはわかりませんでした。

$ kubectl describe nodes
Unable to connect to the server: EOF

原因

configで指定しているクラスタの接続先が誤っていました。

$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    insecure-skip-tls-verify: true
    server: https://localhost:6443
  name: docker-for-desktop-cluster

何らかのタイミングでlocalhostに書き換えてしまっていたようです。

解決策

次の方法で解決します。

  1. 接続すべきIPアドレスとポート番号を調査する
  2. configを書き換える

接続すべきIPアドレスとポート番号の調査

幸い、ローカルの環境なので手元で動いているDockerコンテナの情報は取得できます。まず、Kubernetesのsystem containerが見えるようにします。この操作はGUI上でできます。

スクリーンショット 2019-04-29 0.48.22.png

最下段のShow system containers (acvanced)にチェックを付けてください。

次に、Dockerが待ち受けているポートを探します。今回はdocker ps --no-truncを実行し、コンテナのCOMMANDを確認する方法で行います。実行するとすごい量のテキストが吐き出されるので、その中から目当てのkube-apiserverコマンドの引数 --advertise-addressを見つけます。

$ docker ps --no-trunc | grep 'advertise-address='
(lots of texts)

正直見つけにくいので、出力結果に対して検索機能を駆使して見つけたほうが楽だと思います。次のような文字列を探してください。=の右側の文字列(IPアドレスとポート番号)は環境によって異なります。

--advertise-address=192.168.65.3 
--secure-port=6443

configの書き換え

次のコマンドで書き換えます。

$ kubectl config set-cluster docker-for-desktop-cluster \
--server=https://[IPADDR]:[PORT]

docker-for-desktop-clusterは自分が利用したいクラスタ名を入力してください。[IPADDR]と[PORT]は先程調べた値で書き換えてください。

確認

kubectl get podsで確認できます。次のようなメッセージが帰ってくる場合があります。

$ kubectl get pods
No resources found.

これは単にまだ何のpodも無いだけで正常です。もし正しく設定できていない場合は冒頭のエラーメッセージが帰ってくる、どれだけ待っても何も帰ってこないといった事象が発生します。

参考

27
20
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
27
20