【问题标题】:Issue getting KubeDNS to work让 KubeDNS 工作的问题
【发布时间】:2017-08-23 21:02:45
【问题描述】:

所以我不知道如何进行故障排除,但我整天都在做这件事,并且到处搜索。

我无法让 KubeDNS pod 工作。我正在安装在裸机上的 Fedora 25 上进行部署。我目前在集群中只有一个盒子,kubelet 在 master 上运行。我没有在容器中运行 kubelet 或其他 Kubernetes 服务。

当我尝试在 kubernetes.default 服务(nslookup kubernetes.default.svc.cluster.local 127.0.0.1nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053)上的 kubedns 容器内运行 DNS 查找时,它失败了。

我最终在 kube-apiserver 日志中发现如下消息,在我尝试查找时按时间排列:

kube-apiserver[20876]: E0315 01:09:16.134237 20876 proxy.go:193] Error proxying data from client to backend: write tcp 192.168.1.203:33074->192.168.1.203:10250: write: broken pipe

我使用的服务和复制控制器配置来自https://coreos.com/kubernetes/docs/latest/deploy-addons.html#deploy-the-dns-add-onclusterIP 设置显然已更改以匹配我的环境。

我不太确定在故障排除方面还有什么需要注意的地方,因此感谢您提供任何帮助。我会发布任何有用的配置,但我认为猜测这些配置对我来说是无用的。

【问题讨论】:

  • 您使用的是什么 Pod 网络?您是否已连接到所有 pod?
  • 我正在使用 Flannel 作为我的网络。我在这里浏览了指南 - kubernetes.io/docs/getting-started-guides/fedora/… - 在设置它时,对我自己的命名约定进行了调整,并将主节点和一个节点放在同一个盒子上。我没有连接到其他 pod,通过 ping 检查。
  • 经过 两天 天的故障排除后,我唯一的想法来自这些日志消息:kube-apiserver[27115]: I0315 18:40:06.628204 27115 logs.go:41] http: TLS handshake error from 172.16.40.7:47094: remote error: tls: bad certificate 听起来,kube-dns 无法使用 kube- 进行身份验证api服务器。但是,我可以找到零文档,了解如何为 kube-dns 提供令牌、机密或其他任何东西以向 kube-apiserver 进行身份验证。
  • 由于您似乎在使用 https,您可能想尝试在容器中挂载一个 kubeconfig 文件,然后将其作为参数传递给 kubedns 命令。这修复了我的 SSL 错误,尽管我的 kubedns 版本比您链接的页面中的版本新。此 kubeconfig 应包含 API 服务器 url/ip 和一些凭据。

标签: kubernetes kube-dns fedora-25


【解决方案1】:

我最终通过反复试验解决了这个问题。

按照 Fedora 的裸机节点设置指南,问题是我没有为 kube-apiserver 配置 TLS。

这些选项都是必需的(很久以前就修复了,我不记得缺少哪些选项):

  • --service-account-key-file
  • --tls-cert-file
  • --tls-private-key-file
  • --client-ca-file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 2011-04-19
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多