我最近在VMware上安装了kubernetes,还配置了一些Pod,在配置这些Pod时,它会自动使用VMware的IP进行配置。在此期间,我能够访问该应用程序,但是最近我重新启动了VM和托管该VM的计算机,在此期间-我猜现在VM的IP已更改-使用命令时出现以下错误:
kubectl获取pod -n
userX@ubuntu:~$ kubectl get pod -n NameSpaceX
Unable to connect to the server: dial tcp 192.168.214.136:6443: connect: no route to host```
userX@ubuntu:~$ kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Unable to connect to the server: dial tcp 192.168.214.136:6443: connect: no route to host
kubectl cluster-info以及其他相关命令给出相同的输出。 在VMware工作站设置中,我们正在使用共享主机IP地址设置的网络适配器。我们不确定它是否有影响。
我们还尝试在/ etc / hosts中添加以下条目,它不起作用。
127.0.0.1本地主机\ n 192.168.214.136本地主机\ n 127.0.1.1 ubuntu
我希望再次运行Pod来访问应用程序。我们正在寻找快速的解决方法,以便Pod恢复到运行状态,而不是重新安装所有的Pod,这很耗时。
答案 0 :(得分:5)
如果您使用minikube,有时您要做的一切只是重启minikube
运行:minikube启动
答案 1 :(得分:0)
在运行kubectl命令之前,您需要将admin.conf文件导出为kubeconfig。您可以将其作为环境变量
export kubeconfig=<path>/admin.conf
在此之后,您应该能够运行kubectl命令。我希望您的K8S群集设置正确。
答案 2 :(得分:0)
通常的做法是将配置文件复制到主目录
sudo cp /etc/kubernetes/admin.conf ~/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/config
此外,请确保api服务器地址有效。
server: https://<master-node-ip>:6443
如果没有,则可以使用任何文本编辑器手动对其进行编辑。
答案 3 :(得分:0)
昨晚,我使用此人偶模块安装Kubernetes时遇到了完全相同的错误:https://forge.puppet.com/puppetlabs/kubernetes
事实证明,主机中的iptables设置不正确,它阻止了对api的所有非本地请求。
我解决它的方法(bruteforce解决方案)是
这就是解决我的问题的方法。
可能有一种更好,更干净的方法(例如,只需更改iptables规则以允许访问)。
答案 4 :(得分:0)
我遇到了同样的问题-问题是主节点没有在外部暴露端口6443。
下面是我修复它的步骤。
1)。检查api服务器的IP。
可以通过.kube/config
文件(在 server 字段下)或使用以下命令进行验证:
kubectl describe pod/kube-apiserver-<master-node-name> -n kube-system
。
2)运行curl https://<kube-apiserver-IP>:6443
,查看端口6443
是否打开。
3)如果端口为6443
,则应该获得与证书相关的信息,例如:
curl: (60) SSL certificate problem: unable to get local issuer certificate
4):如果端口6443
未打开:
4.A)SSH进入主节点。
4.B)运行sudo firewall-cmd --add-port=6443/tcp --permanent
(我假设安装了firewalld
)。
4.C)运行sudo firewall-cmd --reload
。
4.D)运行sudo firewall-cmd --list-all
,您应该看到端口6443已更新:
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports: 6443/tcp <---- Here
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules: