Как очистить кэш DNS для пула GKE из metadata.google.internal?

Как очистить кэш DNS для пула GKE из metadata.google.internal?

У меня проблема, когда запись dns для внешнего домена сломалась. Характер проблемы на данный момент неизвестен.

Этот домен был запрошен из кластера kubernetes pod в Google Kubernetes Engine, когда запись была сломана. Проблема сохраняется (инцидент произошел более 2 месяцев назад) при запросе этого домена из кластера.

Кластерный DNS-резолвер использует metadata.google.internal для разрешения DNS, и из кластера эти запросы с помощью dig будут:

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

Создание новой виртуальной машины в том же проекте и зоне корректно разрешает проблемный домен. Это влияет только на активный сервер метаданных кластера DNS-резолвер.

Есть ли способ очистить кэши DNS или какие-либо другие предложения?

В целом я стараюсь избегать редактирования настроек DNS внутри кластера и предпочел бы использовать другие способы исправления.

Изменить дополнительную информацию: NodeLocal DNSCacheуже активен в кластере и ссылается на эту документациюhttps://cloud.google.com/kubernetes-engine/docs/how-to/nodelocal-dns-cacheпроблема в метаданных dns сервера. Этот отрывок из списка преимуществ:

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.

Какой IP 169.254.169.254

решение1

Хотя не существует специального способа очистки сервера метаданных Cloud DNS, у каждого запроса есть TTL, и в большинстве случаев GCE DNS его учитывает. По истечении определенного времени он истекает, и кэш становится недействительным.

Тем не менее, если проблема связана с кэшем, ее следует устранить, заблокировав узел GKE с помощью kubectl cordon $NODENAMEкоманды.

Кроме того, вы можете обойти GCE DNS, указав конфигурацию заглушки DNS. Проверьтеэта ссылкадля получения подробной информации.

решение2

Дополнение NodeLocal DNS-кэша может помочь в разрешении упомянутых доменов в вашем случае, поскольку оно перенаправляет DNS-запросы для внешних URL-адресов непосредственно на локальный сервер метаданных Cloud DNS, минуя kube-dns, и поскольку ваша виртуальная машина Compute Engine может разрешать упомянутые DNS (используя локальный облачный DNS), ваш кластер также сможет это сделать.

Ссылаться наэта документациядля получения подробных инструкций по настройке NodeLocal DNSCache в кластере GKE.

Связанный контент