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地址,以及为什么它能正常工作,并突然停止工作。 有任何想法吗? 谢谢一堆。