我们在GKE(版本1.9)上使用库伯内特斯cronjob来运行几个周期性任务。从pod中,我们需要对网络外部的外部API进行多次调用。通常(但不是所有时间),这些调用会因为DNS解析超时而失败。
我目前的假设是,我们试图联系的服务的上游DNS服务器正在限制我们发出大量重复DNS请求的请求的速率,因为这些记录的TTL太低,或者只是因为我们由于低缓存大小而从dnsmasq缓存中删除了这些条目。
我尝试编辑库贝-dns部署以更改传递给dnsmasq容器的缓存大小和ttl参数,但更改被还原,因为它是GKE的托管部署。有没有办法持久化这些更改,以便GKE不会覆盖它们?一般来说,处理GKE或库伯内特斯引擎上的dns问题的其他想法?
不确定是否涵盖了所有旋钮,但如果您更新了部署使用的ConfigMap,您应该能够在GKE上重新配置KubeDNS。它将在部署新实例时使用ConfigMap。然后对现有pod进行核攻击以使用新的配置重新部署它们。
我建议您使用ExternalDNS pods,像KubeDNS一样,它从库伯内特斯API检索资源列表(服务,Ingresses等),以确定所需的DNS记录列表。