
Eu tenho um problema onde a entrada de DNS para um domínio externo quebrou. A natureza do problema na época é desconhecida.
Esse domínio foi consultado no pod de cluster do Kubernetes no Google Kubernetes Engine enquanto a entrada estava quebrada. O problema persiste (o incidente aconteceu há mais de 2 meses) ao consultar esse domínio do cluster.
O resolvedor de DNS do cluster usa metadata.google.internal para resolução de DNS e, a partir do cluster, essas consultas com dig irão:
dig problematic.external.domain @169.254.169.254
# does not resolve and takes over 2 seconds
dig problematic.external.domain @1.1.1.1
# resolves correctly under 200ms
A criação de uma nova VM no mesmo projeto e zona resolve o domínio problemático corretamente. Isso afeta apenas o resolvedor DNS do servidor de metadados do cluster ativo.
Existe uma maneira de liberar caches de DNS ou alguma outra sugestão?
Em geral, estou tentando evitar a edição das configurações de DNS no cluster e prefiro outros meios para corrigi-lo.
Edite mais informações:
NodeLocal DNSCache
já está ativo no cluster e faz referência a essa documentaçãohttps://cloud.google.com/kubernetes-engine/docs/how-to/nodelocal-dns-cacheo problema é o servidor DNS de metadados. Este trecho da lista de benefícios:
DNS queries for external URLs (URLs that don't refer to cluster resources) are forwarded directly to the local Cloud DNS metadata server, bypassing kube-dns.
Qual é o ip 169.254.169.254
Responder1
Embora não haja uma maneira específica de liberar o servidor de metadados do Cloud DNS, cada consulta ainda tem TTL e, principalmente, o DNS do GCE respeita isso, ela expira após um determinado tempo e o cache é invalidado.
No entanto, se o problema for de cache, ele deverá ser corrigido isolando o nó do GKE usando kubectl cordon $NODENAME
o comando.
Além disso, você pode ignorar o DNS do GCE especificando uma configuração de DNS stub. Confiraesse linkpara detalhes.
Responder2
O complemento de cache DNS NodeLocal pode ajudar a resolver os domínios mencionados no seu caso, pois encaminha consultas DNS para URLs externos diretamente para o servidor de metadados DNS da nuvem local, ignorando o kube-dns, e como sua VM do Compute Engine pode resolver o DNS mencionado (usando a nuvem local DNS) para que seu cluster também possa fazer isso.
Referir-seesta documentaçãopara instruções detalhadas sobre como configurar o NodeLocal DNSCache em um cluster do GKE.