【发布时间】:2018-10-08 19:15:38
【问题描述】:
刚接触 GCloud 和 GKE,对 DNS 感到沮丧。
我们的办公室和运行共享 VPC 的 GCloud 之间有一个 VPN。现有的防火墙规则似乎工作正常。我们可以双向 ping 通,我们可以成功 ssh 到 Google。
所以现在在 GKE 中,我们需要能够使用 DNS 跨 VPN 解析主机名。应该很简单。
我编辑了 kube-dns 配置映射,并使用指向我们两个 DNS 服务器的 stubDomains 添加了我们的内部域名。重新部署 kube-dns pod 后,我在日志中验证了它们正在获取新的 stubDomain 部分。但是我仍然无法解析任何主机,即使是从 kube-dns 容器本身。
登录到 dnsmasq 容器时:
/etc/k8s/dns/dnsmasq-nanny # cat stubDomains
{"internal.domain.com": ["10.85.128.5", "10.85.128.6"]}
/ # nslookup google.com
nslookup: can't resolve '(null)': Name does not resolve
Name: google.com
Address 1: 108.177.9.138 ox-in-f138.1e100.net
Address 2: 108.177.9.101 ox-in-f101.1e100.net
Address 3: 108.177.9.139 ox-in-f139.1e100.net
Address 4: 108.177.9.100 ox-in-f100.1e100.net
Address 5: 108.177.9.102 ox-in-f102.1e100.net
Address 6: 108.177.9.113 ox-in-f113.1e100.net
Address 7: 2607:f8b0:4003:c13::71 ox-in-x71.1e100.net
/etc/k8s/dns/dnsmasq-nanny # cd /
/ # nslookup rancher.internal.domain.com
nslookup: can't resolve '(null)': Name does not resolve
nslookup: can't resolve 'rancher.internal.domain.com': Name does not resolve
nslookup: can't resolve 'rancher.internal.domain.com': Name does not resolve
/ # nslookup rancher.internal.domain.com 10.85.128.5
Server: 10.85.128.5
Address 1: 10.85.128.5
nslookup: can't resolve 'rancher.internal.domain.com': Name does not resolve
现在据我所知,Egress 应该是 Google 对其他任何东西的明确允许。
但以防万一,我添加了一个出口规则以允许 TCP/UDP 53 到服务器。也没有运气。
有什么想法吗?
【问题讨论】:
-
能否提供kube-dns configmap?
-
所以看起来我让 stubDomain 为使用 kube-dns 的容器工作。但是我们也有使用节点 IP 的容器,以及使用 Kube-DNS 的节点 DNS 设置,所以现在我们又被卡住了。
-
这解释了它,因此您需要更新 resolv.conf 以包含您的私有名称服务器。问题是节点 resolv.conf 每当更新 DHCP 租约时都会被元数据服务器替换
-
我认为我们仍然在寻找稍微错误的树。为了测试我编辑了resolved.conf,添加了我的上游DNS服务器,它仍然拒绝解析其他域中的任何主机名。我可以看到查询命中 VPC 防火墙,但之后没有任何反应。
-
知道了。事实证明,我们的 VPN 隧道很快就掉线了,隧道只能从我们的办公室启动,而不是 Gcloud。一旦我购买了隧道,并对resolved.conf 进行了更改,一切似乎都在工作。我想我们必须在 VPN 隧道路由上放置一个 IPSLA。
标签: google-cloud-platform google-compute-engine google-kubernetes-engine