【问题标题】:kubernetes node cannot connect to api-server: dial tcp: lookup kubernetes.default.svc on 127.0.0.53:53: no such hostkubernetes 节点无法连接到 api-server:拨号 tcp:在 127.0.0.53:53 上查找 kubernetes.default.svc:没有这样的主机
【发布时间】:2021-08-03 21:43:00
【问题描述】:

我在 linux academy 上构建了 3 个节点。在控制平面上,我可以看到 3 个节点正在运行。在两个工作节点中的任何一个上,我都尝试运行kubectl get nodes。最初我被提示 KUBERNETES_MASTER 没有设置。

在工作节点内部,我尝试将其设置为 master 中 /kube/config 中的服务器值。所以在工作节点中:export KUBERNETES_MASTER=https://1.2.3.4:6443。当我尝试这个然后再试一次kubectl get nodes 我得到Unable to connect to the server: x509: certificate signed by unknown authority

我也尝试在工作节点中设置为export KUBERNETES_MASTER=https://kubernetes.default.svc。当我尝试这个然后尝试kubectl get nodes 我得到Unable to connect to the server: dial tcp: lookup kubernetes.default.svc on 127.0.0.53:53: no such host

知道我做错了什么吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    您只能使用来自 pod 内部的集群 DNS 名称,而不能直接来自节点。至于证书问题,您的 kube 配置文件通常会包含用于 API TLS 的 CA。

    【讨论】:

    • 感谢您的信息。我不认为kubernetes.default.svc 会起作用,但我不确定还能尝试什么。我可以在配置文件中查看我的 CA,但你能指出我需要在工作节点中使用它的位置吗?
    • 为什么要在节点上使用 kubectl?
    【解决方案2】:

    我们通常将kubectl 的配置保存到~/.kube/config 的文件中,其中包含主端点和证书。您可以轻松地从大师那里复制它。

    而且,kubernetes.default.svc 的 FQDN 是 kubernetes.default.svc.cluster.local,假设您的集群域是 cluster.local。此域名是为部署在 集群并需要访问 API 服务器。这样,域名被设计为仅由kube-dns 在集群中解析。

    对于集群外的进程,主机名或IP地址/VIP通常用作API服务器的端点。

    【讨论】:

      【解决方案3】:

      我在公司代理背后工作。就我而言,原因是 /etc/resolv.conf 中的错误配置(错误的名称服务器)。

      更新域名服务器解决了我的问题。

      【讨论】:

        【解决方案4】:

        我认为,如果我们的资源之一位于不同的位置或不同的区域,我们会收到此错误

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-11-30
          • 1970-01-01
          • 2023-04-04
          • 1970-01-01
          • 2019-06-30
          • 2022-11-03
          • 2020-10-04
          相关资源
          最近更新 更多