¿Cómo borrar el caché de DNS para el grupo GKE desde metadata.google.internal?

¿Cómo borrar el caché de DNS para el grupo GKE desde metadata.google.internal?

Tengo un problema donde se rompió la entrada DNS para un dominio externo. Se desconoce la naturaleza del problema en ese momento.

Ese dominio fue consultado desde el pod del clúster de Kubernetes en Google Kubernetes Engine mientras la entrada no funcionaba. El problema persiste (el incidente ocurrió hace más de 2 meses) al consultar ese dominio desde el clúster.

El solucionador de dns del clúster utiliza metadata.google.internal para la resolución de dns y desde el clúster estas consultas con dig harán lo siguiente:

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

Crear una nueva máquina virtual en el mismo proyecto y zona resuelve el dominio problemático correctamente. Esto afecta solo al solucionador dns del servidor de metadatos del clúster activo.

¿Hay alguna manera de vaciar los cachés de DNS o alguna otra sugerencia?

En general, estoy tratando de evitar editar la configuración de DNS en el clúster y preferiría algún otro medio para solucionarlo.

Editar más información: NodeLocal DNSCacheya está activo en el clúster y hace referencia a esa documentaciónhttps://cloud.google.com/kubernetes-engine/docs/how-to/nodelocal-dns-cacheel problema es el servidor dns de metadatos. Este extracto de la lista de beneficios:

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.

Cual es la ip 169.254.169.254

Respuesta1

Aunque no existe una forma específica de vaciar el servidor de metadatos de Cloud DNS, aún así cada consulta tiene TTL, y en su mayoría GCE DNS lo respeta, caduca después de un cierto tiempo y el caché queda invalidado.

Sin embargo, si el problema es con el caché, debe solucionarse acordonando el nodo GKE mediante kubectl cordon $NODENAMEel comando.

Además, puede omitir el DNS de GCE especificando una configuración de DNS auxiliar. Verificareste enlacepara detalles.

Respuesta2

El complemento de caché de DNS NodeLocal puede ayudar a resolver los dominios mencionados en su caso, ya que reenvía consultas de DNS para URL externas directamente al servidor de metadatos de Cloud DNS local, sin pasar por kube-dns, y dado que su máquina virtual Compute Engine puede resolver el DNS mencionado (usando la nube local). DNS) para que su clúster también pueda hacerlo.

Referirse aesta documentaciónpara obtener instrucciones detalladas sobre cómo configurar NodeLocal DNSCache en un clúster de GKE.

información relacionada