The connection to the server xxxx:6443 was refused - did you specify the right host or port?

10/30/2019

I follow this to install kubernetes on my cloud. When I run command kubectl get nodes I get this error:

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

How can I fix this?

-- Akashii
kubernetes

4 Answers

2/13/2020

I did the following 2 steps. The kubectl works now.

$ service docker restart
$ systemctl restart kubelet
-- Y. Wan
Source: StackOverflow

10/30/2019

Looks like kubeconfig file is missing.. Did you copy admin.conf file to ~/.kube/config ?

-- Praveen
Source: StackOverflow

2/14/2020

Verify if there are any proxies set like "http_proxy" or "https_proxy", mostly we set it as environment variables. If yes, then remove the proxies and it should work for you.

-- anmol agrawal
Source: StackOverflow

10/30/2019

If you followed only mentioned docs it means that you have only installed kubeadm, kubectl and kubelet.

If you want to run kubeadm properly you need to do 3 steps more.

1. Install docker

Install Docker ubuntu version. If you are using another system chose it from left menu side.

Why:

If you will not install docker you will receive errror like below:

preflight] WARNING: Couldn't create the interface used for talking to the container runtime: docker is required for container runtime: exec: "docker": e
xecutable file not found in $PATH
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist
        [ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher

2. Initialization of kubeadm

You have installed properly kubeadm and docker but now you need to initialize kubeadm. Docs can be found here

In short version you have to run command

$ sudo kubeadm init

After initialization you will receive information to run commands like:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

and token to join another VM to cluster. It looks like

kubeadm join 10.166.XX.XXX:6443 --token XXXX.XXXXXXXXXXXX \
    --discovery-token-ca-cert-hash sha256:aXXXXXXXXXXXXXXXXXXXXXXXX166b0b446986dd05c1334626aa82355e7 

If you want to run some special action in init phase please check this docs.

3. Change node status to Ready

After previous step you will be able to execute

$ kubectl get nodes
NAME           STATUS     ROLES    AGE     VERSION
ubuntu-kubeadm   NotReady   master   4m29s   v1.16.2

But your node will be in NotReady status. If you will describe it $ kubectl describe node you will see error:

Ready            False   Wed, 30 Oct 2019 09:55:09 +0000   Wed, 30 Oct 2019 09:50:03 +0000   KubeletNotReady              runtime network not ready: Ne
tworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

It means that you have to install one of CNIs. List of them can be found here.

EDIT

Also one thing comes to my mind.

Sometimes when you turned off and on VM you need to restart kubelet and docker service. You can do it by using

$ service docker restart
$ systemctl restart kubelet

Hope it helps.

-- PjoterS
Source: StackOverflow