kubectl:无法连接到服务器:拨号 tcp 192.168.214.136:6443:连接:没有到主机的路由

Vic*_*cky 8 ip admin hostname vmware-workstation kubernetes

我最近在 VMware 上安装了 kubernetes 并且还配置了几个 pod,在配置这些 pod 时,它会自动使用 VMware 的 IP 并进行配置。在那段时间我能够访问该应用程序,但最近我重新启动了虚拟机和托管虚拟机的机器,在此期间 - 我猜虚拟机的 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
Run Code Online (Sandbox Code Playgroud)

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 恢复到运行状态。

小智 17

如果你使用 minikube 有时你要做的就是重新启动 minikube

运行:minikube start


Rtm*_*tmY 8

我遇到了同样的问题 - 问题是主节点没有对外暴露端口 6443。

以下是我修复该问题所采取的步骤。

1)检查api服务器的IP。
这可以通过.kube/config文件(在服务器字段下)或使用:进行验证
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
Run Code Online (Sandbox Code Playgroud)

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:
Run Code Online (Sandbox Code Playgroud)


Nav*_*Jha 2

在运行 kubectl 命令之前,您需要将 admin.conf 文件导出为 kubeconfig。您可以将其作为您的环境变量

export kubeconfig=<path>/admin.conf
Run Code Online (Sandbox Code Playgroud)

之后您应该能够运行 kubectl 命令。我希望您的 K8S 集群设置正确。