首页 > 解决方案 > 来自 Pod 内部的 ibm-cloud-private DNS 或 Internet 问题

问题描述

我一直在试验一个 ICP 实例(ICP 2.1.0.2):1 个主节点和 2 个工作节点。

我注意到我的 ICP Kubernetes 集群中的 pod 没有出站 Internet 连接(或者存在 DNS 查找问题)

例如,如果我在集群中启动了一个busybox pod,并尝试执行“nslookup github.com”或“ping google.com”......它失败了......

kubectl run curl --image=radial/busyboxplus:curl -i --tty

root@curl-545bbf5f9c-gssbg:/ ]$ nslookup github.com
Server:    10.0.0.10
Address 1: 10.0.0.10

nslookup: can't resolve 'github.com'

我检查并看到“kube-dns”(服务、pod、daemonset.extensions、daemonset.apps)似乎正在运行。

当我登录(例如 SSH)到 ICP 主节点和工作节点机器时,我能够成功 ping 这些外部站点。

有关如何解决此问题的任何建议?谢谢!

标签: ibm-cloud-private

解决方案


我们遇到了一个相反的问题——我们可以在互联网或其他域上查找任何内容,但不能在部署集群的域中查找。

结果证明这是关于 config.yaml 中 cluster_domain 和 cluster_CA_domain 含义的模糊文档。但作为一个优点,我们必须了解更多关于这些和配置 kube-dns 的知识。

基本上 cluster_domain 应该是集群的私有虚拟域,kube-dns 将对其具有权威性。它应该使用主机的 resolve.conf 名称服务器作为上游服务器的任何其他内容。如果您怀疑您的 DNS 服务器没有被用于公共 DNS,那么您可以更新 kube-dns configMap 以指定它应该使用的上游服务器。

https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/

这当然是假设您已经正确配置了 cluster_domain、cluster_CA_domain。

他们应该看起来像

cluster_domain = mycluster.icp  <----- could be "Mickey-mouse" for all it matters
cluster_CA_domain = icp.mycompany.com <----- the endpoint that portal/registry/api etc are accessible to users on

推荐阅读