Como limpar o cache DNS do pool do GKE em metadata.google.internal?

Como limpar o cache DNS do pool do GKE em metadata.google.internal?

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 DNSCachejá 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 $NODENAMEo 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.

informação relacionada