问题描述
在部署kubernetes之后,执行kubectl命令,无论是get nodes还是apply操作,Kubernetes报 The connection to the server localhost:8080 was refused
可能出现原因
出现这种问题的原因有两种
1、在任何节点上执行报错
出现这个问题的原因是kubectl命令需要使用kubernetes-admin的身份来运行,在“kubeadm int”启动集群的步骤中就生成了“/etc/kubernetes/admin.conf”,但是非主节点还没有该配置。
2、在配置了context的主节点上执行报错
在没有创建context之前还用,但是使用kubectl config set-context xxx --namespace=xxx,没有设置cluster=kubernetes,user=kubernetes-admin
可以打开cat /etc/kubernetes/admin.conf查看
解决办法
1、对于任何节点上执行报错
在各个非主节点执行:
scp /etc/kubernetes/admin.conf user@host:/etc/kubernetes/admin.conf
user为主机登录用户
host为主机ip
然后执行:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
如果不是超级管理员用户,请以sudo的方式执行。
2、对于在配置了context的主节点上执行报错
2.1 创建context时
kubectl config set-context xxx --namespace=xxx --cluster=kubernetes --user=kubernetes-admin
user: 一定要指定为kubernetes-admin
cluster: 集群名
2.2 修改/etc/kubernetes/admin.conf配置文件
配置cluster,user如上图
保存。
总结
以上两种方法基本上基本上可以解决报错问题。