【问题标题】:Unable to enter a kubernetes pod. Error from server: error dialing backend: dial tcp: lookup (node hostname) on 168.63.129.16:53: no such host无法进入 Kubernetes pod。来自服务器的错误:错误拨号后端:拨号 tcp:在 168.63.129.16:53 上查找(节点主机名):没有这样的主机
【发布时间】:2017-11-16 19:18:32
【问题描述】:

我们在 Azure 公共云中部署了一个使用 ACS 引擎的 K8S 集群。 我们能够创建部署和服务,但是当我们使用“kubectl exec -ti (pod name) (command)”进入 pod 时,我们会收到以下错误,

来自服务器的错误:错误拨号后端:拨打 tcp:在 168.63.129.16:53 上查找(节点主机名):没有这样的主机

我查看了整个互联网并尽我所能来解决这个问题,但到目前为止还没有运气。 操作系统是 Ubuntu,168.63.129.16 是 Azure 用于 DNS 的公共 IP。(请参阅下面的链接)

https://blogs.msdn.microsoft.com/mast/2015/05/18/what-is-the-ip-address-168-63-129-16/

我已经在 /etc/hosts 中添加了主机条目,并在主节点服务器的 resolv.conf 中添加了条目,nslookup 解决了同样的问题。我还通过向 kubelet 添加 --resolv-conf 标志进行了测试,但仍然失败。我希望这个社区的人可以帮助我们解决这个问题。

【问题讨论】:

  • 据我所知,如果您为命名空间提供有限的 resourcesQuota,那么您会在那里创建资源数量,例如部署、Pod、服务、PVC 等。因此,所有的 resourcesQuota 都会被消耗通过这些 k8s 资源。现在,如果您尝试通过使用另一个 api 调用或请求来消耗更多的资源配额。在您的情况下,您使用的是“kubectl exec -ti (pod name) (command)”,那么它会被准入控制器拒绝。我建议您解决资源配额限制。您还可以进一步使用准入控制器进行挖掘。也许有一个标志可以忽略它
  • 你能运行任何其他kubectl 命令吗?
  • @Rico 是的,我们能够运行其他 kubectl 命令并且它们工作正常。

标签: azure dns kubernetes kubectl kube-dns


【解决方案1】:

验证运行 pod 的节点是否可以从 API 服务器容器内部解析和访问。如果您在主节点上向 /etc/resolv.conf 添加条目,请验证它们在 APIserver 容器中是否可见,如果不可见,则重新启动 API 服务器 pod 可能会有所帮助

【讨论】:

    【解决方案2】:

    问题出在 VirtualBox 层

    sudo ifconfig vboxnet0 up
    

    解决方案取自这里https://github.com/kubernetes/minikube/issues/1224#issuecomment-316411907

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2018-04-18
      相关资源
      最近更新 更多