K8S_Kubernetes 出现 The connection to the server localhost:8080 was refused 的解决方法

介绍


最接几天在折腾 Kubernetes,记录一下遇到的一个问题以及解决方法。Kubernetes 是谷歌出品的一个容器集群管理系统,可以管理大规模分布式的容器集群,使用场景非常广泛。

问题


在集群的工作节点上执行kubectl报错

[root@k8s-node239 ~]# kubectl get pods
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[root@k8s-node239 ~]# 
[root@k8s-node239 ~]# 

作为集群管理的核心,工作节点上的kubectl可能一上来就跪了

安装的方法今天暂且不说,记录一下 The connection to the server localhost:8080 was refused 这个问题的解决方法。

解决方法1


在 kubectl init 之后,需要使用一个非 root 账户登录,然后运行下列命令:

sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf

即可完美解决问题。

解决方法2

出现这个问题的原因是kubectl命令需要使用kubernetes-admin的身份来运行,在“kubeadm int”启动集群的步骤中就生成了“/etc/kubernetes/admin.conf”。

因此,解决方法如下,将主节点中的【/etc/kubernetes/admin.conf】文件拷贝到工作节点相同目录下:

#复制admin.conf,请在主节点服务器上执行此命令
scp /etc/kubernetes/admin.conf 172.16.2.202:/etc/kubernetes/admin.conf
scp /etc/kubernetes/admin.conf 172.16.2.203:/etc/kubernetes/admin.conf

然后分别在工作节点上配置环境变量:

#设置kubeconfig文件
export KUBECONFIG=/etc/kubernetes/admin.conf
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

接下来,工作节点就正常了,如

[root@k8s-node239 ~] kubectl get pods -n devops
NAME                                                             READY   STATUS    RESTARTS   AGE
jenkins-app-5f6b59fd6c-28lq2                                     1/1     Running   3          100d
jenkins-slave-1fb0bc24-0db2-40b4-a2fb-a08e63b233fa-7lv4s-c5vhq   5/6     Error     0          18d
jenkins-slave-f0f10242-c76c-4ff6-b676-a010d67ddee9-qs4ms-5x3sk   5/6     Error     0          4d22h
tomcat-deployment-766c6c7f44-cx2x9                               1/1     Running   3          95d
[root@k8s-node239 ~]

版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原创文章,作者:老C,如若转载,请注明出处:https://www.code404.icu/1087.html

发表评论

登录后才能评论