서비스 검색 및 DNS 개요

이 주제에서는 AWS용 GKE가 AWS Virtual Private Cloud(VPC)와 클러스터 모두에서 DNS(도메인 이름 서비스)와 상호작용하는 방법을 설명합니다.

AWS VPC DNS

이 섹션에서는 AWS용 GKE에 대해 VPC를 구성하는 방법을 설명합니다.

VPC DNS 구성

AWS용 GKE는 AWS VPC에서 여러 가지 DNS 구성을 지원합니다. DHCP 옵션 집합을 만들 때 VPC의 DNS 설정을 구성합니다. 자세한 내용은 VPC에 대한 DNS 지원을 참조하세요.

다음 옵션을 구성할 수 있습니다.

DNS 호스트 이름
이렇게 하면 공개 IP 주소의 EC2 인스턴스가 해당 공개 DNS 호스트 이름을 가져오는지 여부가 설정됩니다. VPC의 DHCP 옵션 집합에서 enableDNSHostnames 필드를 사용하여 이 필드를 설정합니다. 자세한 내용은 VPC DNS 호스트 이름VPC에 대한 DHCP 옵션 집합을 참조하세요.
EC2 DNS 호스트 이름
이렇게 하면 EC2 인스턴스가 기본 DNS 호스트 이름 또는 커스텀 DNS 호스트 이름을 수신하는지 여부가 설정됩니다.
DNS 서버
VPC의 DHCP 옵션 집합에 AWS Route53 DNS 서버(AmazonProvidedDNS 옵션 사용) 또는 호스팅된 DNS 서버가 사용되는지 여부입니다.

호스팅된 DNS 사용

호스팅된 DNS를 사용하려면 제어 영역노드 풀 보안 그룹이 TCP 및 UDP 포트 53에서 아웃바운드 트래픽을 허용해야 합니다.

지원되는 VPC DNS 구성

다음 표에는 AWS용 GKE에서 지원하는 DNS 구성이 포함되어 있습니다.

DNS 호스트 이름 사용 설정 EC2 DNS 호스트 이름 DNS 서버 지원 여부
true 기본값 AWS Route53
false 기본값 AWS Route53
true 커스텀 AWS Route53
false 커스텀 AWS Route53
true 커스텀 호스팅 방식
false 커스텀 호스팅 방식
true 기본값 호스팅 방식 없음
false 기본값 호스팅 방식 없음

서비스 검색

서비스 검색은 워크로드가 서비스의 IP 주소를 몰라도 서비스를 찾는 프로세스입니다. 이 섹션에서는 AWS용 GKE가 서비스 검색 및 관리형 DNS를 구현하는 방법을 설명합니다.

Kubernetes는 다음 사양을 사용하는 서비스 이름을 자동으로 생성합니다.

service.namespace.svc.cluster.local

각 항목의 의미는 다음과 같습니다.

  • service: 서비스 이름
  • namespace: 서비스의 네임스페이스

워크로드도 DNS 이름을 사용하여 example.net과 같은 외부 서비스에 액세스합니다. Kubernetes의 DNS 동작에 대한 자세한 내용은 서비스 및 pod의 DNS를 참조하세요.

CoreDNS

GKE on AWS는 CoreDNS를 사용하여 클러스터 내에서 DNS 이름을 확인합니다. CoreDNS는 kube-system 네임스페이스에서 중복되고 확장된 배포로 실행됩니다. CoreDNS 배포에는 CoreDNS pod를 그룹화하여 단일 IP 주소를 제공하는 서비스가 있습니다. CoreDNS 배포는 클러스터의 크기와 사용량에 따라 확장됩니다.

NodeLocal DNSCache

GKE on AWS는 NodeLocal DNSCache를 사용하여 DNS 조회 성능을 개선합니다. NodeLocal DNSCache는 클러스터의 각 노드에서 DaemonSet로 실행됩니다. 포드가 DNS 요청을 수행하면 요청은 먼저 동일한 노드의 DNS 캐시로 이동합니다. 캐시가 DNS 요청을 해결할 수 없는 경우 캐시는 요청을 다음 중 하나로 전달합니다.

  • 내부 이름의 CoreDNS(예: foo.bar.svc.cluster.local)
  • 외부 이름(예: example.net)에 대한 Amazon DNS 서버

다음 단계