GCloud和GKE的新手,并且对DNS感到沮丧。
我们在办公室和运行共享VPC的GCloud之间建立了VPN。现有的防火墙规则似乎可以正常工作。我们可以通过两种方式ping通,也可以成功将ssh传送给Google。
因此,现在从GKE内部,我们需要能够使用DNS在整个VPN中解析主机名。应该很简单。
我编辑了kube-dns配置图,并使用指向我们两个DNS服务器的stubDomains添加了我们的内部域名。重新部署了kube-dns吊舱后,我验证了它们在日志中是否获得了新的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连接到服务器。也没有运气。
有什么想法吗?
答案 0 :(得分:0)
我正在尝试猜测,因为我们没有您的GKE群集配置,但是我已经遇到类似的情况,并且我敢打赌您没有配置IP别名https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips
一点解释:您无法从另一个vpc上载一个vpc上载,这意味着,如果您在VPC中,则无法从共享连接访问另一个项目或办公室的托管服务(通过我想是vpn ipsec隧道)。由于GKE是一项托管服务,因此默认情况下它将驻留在专用网络中,并且为您的项目打开了一条路,因此您无法使用很多东西(用于监视或进行DNS解析的方法是通用的,因为群集不知道如何加入您的其他网络。
IP别名通过在项目的网络内部创建群集来解决此问题,以便您可以在与项目其余部分相同的ip范围内访问群集,并使用vpc提取。
希望它可以解决您的问题。
答案 1 :(得分:0)
在更广泛的公众评论中回顾我们的讨论:
您可以使用kube-DNS configmap来添加stubDomain,您的Pod将使用它们来进行名称解析。更改配置映射后,需要重新创建kube-dns pod才能使更改生效。使用默认dns设置(clusterFirst is the default)的任何广告连播都将使用kube-dns解析。
对dns配置使用“默认”设置的节点(针对节点resolv.conf进行解析)将忽略在configmap中配置的stubDomain。相反,我们需要更新节点resolve.conf文件。
有两件事要注意。 1)每个GCE VM(包括节点)上的resolv.conf文件为overwritten by the metadata server whenever the DHCP lease is renewed。 2)在群集创建过程中无法以编程方式附加dns条目。
要解决此问题,请使用daemonset as a startup script,它将新的其他名称服务器附加到resolv.conf文件中,然后,确保元数据服务器不会将文件还原回make the file immutable >