DNS在Google Compute Engine节点中运行的Docker镜像不起作用
我有一个在Google Compute Engine节点上运行的Python程序,通过Kubernetes部署在Docker镜像上。 程序执行的一部分涉及连接到几个外部数据库,其中之一是BigQuery。 昨天该程序自发地开始DB插入失败(最后一次提交已稳定运行了几天)。 该错误表明该计划没有解决地址www.googleapis.com。 我连接到pod,并意识到DNS服务器不工作; ping到google.com甚至没有经过。
我检查了Docker镜像的resolv.conf文件,并在nameserver属性上find了一个本地IP地址。 我尝试了ping它,但它不会回应。 我将IP地址更改为Google的公有DNS,但似乎由于BigQuery客户端通过应用程序默认凭据获取证书的方式,客户端尝试访问名为metadata.google.internal的服务器,该服务器不能parsing在公共DNS中。 所以我再次将IP地址更改为计算引擎节点的DNS地址,因为它显示在其resolv.conf文件中。 这解决了这个问题。
但是,我现在必须在每次重新部署Docker映像时都做同样的更改,这非常烦人。 我很想知道Docker如何决定映像的DNS地址,以及为什么它能正常工作,并突然停止工作。 有任何想法吗? 谢谢一堆。
- Boot2Docker到Google Compute Engine VM:保存Docker容器
- 在GCE Docker下运行Couchbase并获取最大文件数量的错误
- 无法将端口绑定到Google容器优化虚拟机中的容器
- 尽pipenetstat指出端口可用,Docker运行不能发布端口范围
- 如何在Google Compute Engine上正确运行Docker(自动重启)
- 如何克服这个500服务器内部错误试图拉托pipe虚拟机的谷歌/ appengine-java图像?
- 我试图在Google云计算虚拟机实例上运行Docker“hello-world”应用,但似乎无法通过Web浏览器访问输出
- Ubuntu上托pipe虚拟机使用自定义运行时
- 在Google计算引擎上使用Neo4j的默认主机