Metadata.google.internal에서 GKE 풀의 DNS 캐시를 지우는 방법은 무엇입니까?

Metadata.google.internal에서 GKE 풀의 DNS 캐시를 지우는 방법은 무엇입니까?

외부 도메인에 대한 DNS 항목이 중단되는 문제가 있습니다. 당시 문제의 성격은 알려지지 않았습니다.

해당 도메인은 항목이 손상된 동안 Google Kubernetes Engine의 kubernetes 클러스터 포드에서 쿼리되었습니다. 클러스터에서 해당 도메인을 쿼리할 때 문제가 지속됩니다(2개월 전에 발생한 사건).

클러스터 DNS 확인자는 DNS 확인을 위해 Metadata.google.internal을 사용하고 클러스터에서 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

동일한 프로젝트 및 영역에 새 VM을 생성하면 문제가 있는 도메인이 올바르게 해결됩니다. 이는 활성 클러스터 메타데이터 서버 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.

또한 스텁 DNS 구성을 지정하여 GCE DNS를 우회할 수 있습니다. 확인해 보세요이 링크자세한 내용은.

답변2

NodeLocal DNS 캐시 애드온은 외부 URL에 대한 DNS 쿼리를 kube-dns를 우회하여 로컬 Cloud DNS 메타데이터 서버로 직접 전달하므로 귀하의 사례에서 언급된 도메인을 확인하는 데 도움이 될 수 있습니다. 또한 Compute Engine VM이 언급된 DNS를 확인할 수 있기 때문에(로컬 클라우드 사용) DNS) 클러스터에서도 그렇게 할 수 있습니다.

인용하다이 문서GKE 클러스터에서 NodeLocal DNSCache를 구성하는 방법에 대한 자세한 안내를 확인하세요.

관련 정보