K8 v1.23.1 – The connection to the server localhost:8080 was refused – did you specify the right host or port?

Above, is one of the most common error we get whenever we install a new K8 cluster or start working on one deployed by other users.

First thing first, this error is not version specific and also doesn’t imply something is wrong with your configuration. (So please don’t send that mail you wrote for your kubernetes administrator)

Here what it looks like

[centos@cntmaster ~]$ kubectl get pods
The connection to the server localhost:8080 was refused - did you specify the right host or port?

Now when I said its not anyone’s fault actually, reason is pretty simple. Just check the call flow here. I logged in my cntmaster system as centos user and tried to call kube apiserver on default address “localhost:8080”.

Now connection was refused, so either I am specifying wrong address or my kube-apiserver container is down. Checking sceond scenario ist,

[centos@cntmaster ~]$ sudo docker ps | grep kube-apiserver
e60470040c84   b6d7abedde39           "kube-apiserver --ad…"   33 minutes ago   Up 33 minutes 
61ef28650ca   k8s.gcr.io/pause:3.6   "/pause"                 33 minutes ago   Up 33 minutes

So kube-apiserver is up, next we verify address. Now to get your k8 cluster’s server adress you may check admin.conf file either at /etc/kubernetes loction or your cluster home directory.

For me, while installing k8 cluster via kubeadm, I was logged in as root and I copied admin.conf file to newly created $HOME/.kube directory. Since I was doing all these steps via root, my k8 cluster home directory with config file was created in /root.

[root@cntmaster centos]# ls -al /root/.kube/
total 8
drwxr-xr-x  3 root root   33 Jan 14 04:47 .
dr-xr-x---. 3 root root  148 Feb  3 02:35 ..
drwxr-xr-x  4 root root   35 Jan 14 04:47 cache
-rwxr-xr-x  1 root root 5641 Jan 14 04:39 config

I read my config file to find out cluster IP and port on which k8 is listening.

[root@cntmaster centos]# cat /etc/kubernetes/admin.conf 
apiVersion: v1
- cluster:
  name: kubernetes
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes

Verifying my cluster listening ip and port, next I need to check why kubectl command cannot read this config file and send api call to correct cluster.

Finally, issue was identified in improper rights to read file. Like I said before, I created my home directory in /root and gave permission to admin.conf file for root user and group only.

While I am trying to run kubecetl command from centos normal user which don’t have permission to read config file.

[centos@cntmaster ~]$ cd /root/.kube
-bash: cd: /root/.kube: Permission denied


To resolve issue, I created new .kube directory with centos user and copied config file from /etc/kubernetes

[centos@cntmaster ~]$   mkdir -p $HOME/.kube
[centos@cntmaster ~]$   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[centos@cntmaster ~]$   sudo chown $(id -u):$(id -g) $HOME/.kube/config

Now kubectl can read config file and send http calls to apiserver on correct cluster IP and port.

[centos@cntmaster ~]$ kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS       AGE
calico-kube-controllers-5b869f6dcc-cchb6   1/1     Running   2 (101m ago)   19d
calico-node-fvmlz                          0/1     Running   2 (101m ago)   19d
calico-node-s46w4                          0/1     Running   0              19d
coredns-64897985d-7bphf                    1/1     Running   2 (101m ago)   19d
coredns-64897985d-mdqgv                    1/1     Running   2 (101m ago)   19d
etcd-cntmaster                             1/1     Running   2 (101m ago)   19d
kube-apiserver-cntmaster                   1/1     Running   2 (101m ago)   19d
kube-controller-manager-cntmaster          1/1     Running   2 (101m ago)   19d
kube-proxy-2pm8f                           1/1     Running   0              19d
kube-proxy-85xm8                           1/1     Running   2 (101m ago)   19d
kube-scheduler-cntmaster                   1/1     Running   2 (101m ago)   19d

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s