我们在GKE (版本1.9)上使用Kubernetes cronjob来运行几个周期性任务。在pods中,我们需要对网络外部的外部API进行多次调用。通常(但不是所有时候),这些调用都会因为DNS解析超时而失败。
我目前的假设是,我们尝试联系的服务的上游DNS服务器对请求进行了速率限制,其中我们进行了大量重复的DNS请求,因为这些记录的TTL太低,或者只是因为缓存大小较低而从dnsmasq缓存中删除了这些条目。
我尝试编辑kube-dns部署,以更改传递给dnsmasq容器的缓存大小和ttl参数,但更改被恢复,因为它是由GKE管理的部署。有没有一种方法可以持久化这些更改,以便GKE不会覆盖它们?对于GKE或Kubernetes引擎上的dns问题,还有其他的解决方法吗?
发布于 2018-08-21 11:06:49
不确定是否覆盖了所有的旋钮,但是如果您更新了部署使用的ConfigMap,您应该能够在GKE上重新配置KubeDNS。它将在部署新实例时使用ConfigMap。然后使用新的配置重新部署现有的pod。
发布于 2018-10-06 03:33:06
我建议您使用像KubeDNS这样的ExternalDNS pods,它可以检索资源列表(服务、Ingresses等)。从Kubernetes API确定所需的DNS记录列表。
https://stackoverflow.com/questions/51513305
复制相似问题