google-cloud-platform - GKE - 到 VPN 网络的 Kube-DNS 解析
问题描述
刚接触 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 到服务器。也没有运气。
有什么想法吗?
解决方案
我正在尝试猜测,因为我们没有您的 GKE 集群配置,但我已经遇到过类似的情况,我敢打赌您没有配置 IP 别名https://cloud.google.com/kubernetes-engine/docs/how-到/别名-ips
一点解释:你不能从另一个 vpc pearing 访问一个 vpc pearing,这意味着如果你在一个 VPC 中,你不能从一个共享连接到另一个项目或你的办公室访问托管服务(通过一个 vpn ipsec我想是隧道)。由于 GKE 是一项托管服务,默认情况下它会存在于一个私有网络中并打开一个与您的项目的连接,因此您不能使用很多东西(prometheus 用于监控或进行 DNS 解析,因为集群不知道如何加入您的其他网络)。
IP Aliasing 通过在项目网络中创建集群来解决这个问题,这样您就可以访问与项目其余部分相同的 ip 范围内的集群并使用 vpc pearing。
希望它能解决你的问题。
推荐阅读
- python - 我编写的一个简单的二进制加法程序通过耳机插孔产生了奇怪的嗡嗡声
- node.js - Serverless - DynamoDB (terrible) performances compared to RethinkDB + AWS Lambda
- qt - How to change Qt ProgressBar color?
- python - Django:在 DateTimeField 中添加 auto_now 时出错
- php - My code for downloading longitude and latitude is now returning null value for existing areas
- python - Python Multi threading - Rawlink error on connection.wait()
- xml - 从 XSL 中的 XML 文档中获取标签
- html - divs are not horizantal bootstrap
- javascript - Abstracting Hapi17 routes using async await
- delphi - 制作包含其他组件的自定义组件的正确方法