이 문서에서는 Google Kubernetes Engine (GKE) 클러스터의 DNS 제공업체로 Cloud DNS를 설정하고 사용하는 방법을 설명합니다.
Cloud DNS는 Kubernetes 서비스의 DNS 레코드를 자동으로 관리합니다. 기본적으로 이러한 레코드는 클러스터 내에서만 액세스할 수 있습니다 (클러스터 범위).
Compute Engine VM과 같이 클러스터 외부에서 헤드리스 서비스를 해결해야 하는 경우 VPC 범위 또는 추가 VPC 범위를 사용 설정해야 합니다.
이 문서는 개발자, 관리자, 설계자를 비롯한 GKE 사용자를 대상으로 합니다. Google Cloud의 일반적인 역할과 예시 태스크에 대해 자세히 알아보려면 일반 GKE 사용자 역할 및 태스크를 참고하세요.
이 문서를 최대한 활용하려면 다음 사항을 숙지해야 합니다.
클러스터 외부에서 ClusterIP 또는 NodePort 서비스에 연결할 수 있도록 하려면 LoadBalancer 또는 다른 방법을 사용하여 서비스를 노출하고 Cloud DNS에 외부 IP 주소를 등록해야 합니다.
kube-dns를 DNS 제공업체로 사용하는 방법에 대한 자세한 내용은 서비스 검색 및 DNS를 참고하세요.
커스텀 버전의 kube-dns 또는 커스텀 DNS 제공업체를 사용하는 방법은 커스텀 kube-dns 배포 설정을 참고하세요.
가격 책정
Cloud DNS가 GKE Standard 클러스터의 DNS 제공업체인 경우 GKE 클러스터 내 포드의 DNS 쿼리 요금은 Cloud DNS 가격 책정 기준에 따라 청구됩니다.
GKE에서 관리하는 VPC 범위 DNS 영역에 대한 쿼리에는 표준 Cloud DNS 가격 책정을 사용하여 요금을 청구합니다.
제한 및 한도
다음과 같은 제한사항이 적용됩니다.
- VPC 범위는 Autopilot 클러스터에서 지원되지 않으며 클러스터 범위만 지원됩니다. GKE Autopilot 클러스터에서 실행되는 헤드리스 서비스 이름을 확인해야 하는 경우 추가 VPC 범위를 사용해야 합니다.
- 클러스터를 만들 때만 추가 VPC 범위 GKE Autopilot 클러스터를 사용 설정할 수 있습니다. 기존 GKE Autopilot 클러스터에서 추가 VPC 범위를 사용 설정하거나 사용 중지할 수 없습니다.
- 공유 VPC 네트워크의 서비스 프로젝트에서 추가 VPC 범위 클러스터를 만들 수 없습니다.
- IL4 규정 준수 체계가 있는 Assured Workload에서는 GKE용 Cloud DNS를 사용할 수 없습니다. 이러한 규제 환경에서는
kube-dns이 강제 적용됩니다. - 관리형 비공개 DNS 영역에 대한 수동 변경은 지원되지 않으며 Cloud DNS 컨트롤러에서 덮어씁니다. 이러한 영역의 DNS 레코드 수정사항은 컨트롤러가 다시 시작될 때 유지되지 않습니다.
- 클러스터에서 GKE용 Cloud DNS를 사용 설정하면
kube-dns가 계속 클러스터에서 실행됩니다.kube-dns배포 및 자동 확장 처리를 0으로 확장하여kube-dns를 사용 중지할 수 있습니다. --cluster-dns-scope플래그로 범위를 설정한 후에는 클러스터에서 DNS 범위를 변경할 수 없습니다. DNS 범위를 변경해야 하는 경우에는 다른 DNS 범위로 클러스터를 다시 만들어야 합니다.- CloudDNS 리소스 제한사항이 적용됩니다. 특히 한 번에 응답 정책 영역 하나만 VPC 네트워크에 바인딩할 수 있습니다. VPC 및 부가 VPC 범위의 경우 클러스터의 VPC 네트워크에 바인딩된 이름 지정 규칙을 따르지 않는 응답 정책 영역이 이미 있으면 클러스터 생성이 실패합니다.
- 커스텀 스텁 도메인과 업스트림 DNS 서버 구성이 포드와 노드의 DNS 구성에 적용됩니다. 호스트 네트워킹을 사용하는 포드 또는 호스트에서 직접 실행되는 프로세스도 스텁 도메인과 업스트림 네임서버 구성을 사용합니다. 이 동작은 Standard에서만 지원됩니다.
kube-dnsConfigmap을 통해 구성된 커스텀 스텁 도메인과 업스트림 네임서버는 클러스터 범위 DNS의 Cloud DNS에 자동으로 적용됩니다. VPC 범위 DNS는kube-dnsConfigMap을 무시하므로 직접 Cloud DNS에 이러한 구성을 적용해야 합니다. 이 동작은 Standard에서만 지원됩니다.kube-dns에서 VPC 범위로 마이그레이션하면 작업이 중단됩니다.kube-dns에서 VPC 범위로 전환하거나 그 반대로 전환할 때 클러스터를 다시 만듭니다.- VPC 범위의 경우 서비스의 보조 IP 주소 범위는 해당 서브네트워크의 다른 클러스터와 공유해서는 안 됩니다.
- VPC 범위에서는 PTR 레코드와 연결된 응답 정책이 VPC 네트워크에 연결됩니다. 클러스터 네트워크에 결합된 다른 응답 정책이 있는 경우 Kubernetes 서비스 IP 주소에 대해 PTR 레코드 확인이 실패합니다.
- 포드 수가 허용된 할당량을 초과하는 헤드리스 서비스를 만들려고 하면 Cloud DNS에서 서비스의 레코드 세트 또는 레코드를 만들지 않습니다.
- DNS 라벨의 최대 문자수 제한은 63자(영문 기준)이지만 서비스 및 포트 이름 문자수 제한은 62(영문 기준)자입니다. 이 동작은 GKE가 DNS 레코드에 밑줄 프리픽스를 추가하기 때문입니다.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치했으면
gcloud components update명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.
프로젝트에서 Cloud DNS API를 사용 설정합니다.
클러스터 범위에서 Cloud DNS를 사용하려면 다음 버전 중 하나가 필요합니다.
- 표준: GKE 버전 1.24.7-gke.800 또는 1.25.3-gke.700 이상
- Autopilot: GKE 버전 1.25.9-gke.400 또는 1.26.4-gke.500 이상
- Google Cloud CLI 버전 411.0.0 이상
추가 VPC 범위에서 Cloud DNS를 사용하려면 다음 버전 중 하나가 필요합니다.
- GKE 버전 1.28.3-gke.1430000 이상
- Google Cloud CLI 버전 503.0.0 이상
클러스터 범위 DNS 사용 설정
클러스터 범위 DNS에서는 GKE 클러스터에서 실행되는 노드만 서비스 이름을 확인할 수 있으며 서비스 이름은 클러스터 간에 충돌하지 않습니다. 이 동작은 GKE 클러스터의 kube-dns와 동일합니다. 즉, 애플리케이션이 다운타임 또는 변경되지 않고 클러스터를 kube-dns에서 Cloud DNS 클러스터 범위로 마이그레이션할 수 있습니다.
다음 다이어그램에서는 Cloud DNS가 GKE 클러스터의 비공개 DNS 영역을 만드는 방법을 보여줍니다. DNS 범위에는 노드만 있으므로 클러스터의 노드에서 실행 중인 프로세스와 포드만 클러스터의 DNS 레코드를 확인할 수 있습니다.
새 클러스터에서 클러스터 범위 사용 설정
버전 1.25.9-gke.400, 1.26.4-gke.500 이상의 새 Autopilot 클러스터는 기본적으로 Cloud DNS 클러스터 범위로 설정됩니다. 다음 섹션에서는 새 Standard 클러스터에서 클러스터 범위를 사용 설정하는 방법을 보여줍니다.
클러스터 범위가 사용 설정된 Standard 클러스터 만들기
gcloud CLI 또는 Google Cloud 콘솔을 사용하여 Cloud DNS 클러스터 범위가 사용 설정된 GKE Standard 클러스터를 만들 수 있습니다.
gcloud
--cluster-dns 플래그를 사용하여 클러스터를 만듭니다.
gcloud container clusters create CLUSTER_NAME \
--cluster-dns=clouddns \
--cluster-dns-scope=cluster \
--location=COMPUTE_LOCATION
다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름입니다.COMPUTE_LOCATION: 클러스터의 Compute Engine 위치
cluster가 기본값이기 때문에 --cluster-dns-scope=cluster 플래그는 명령어의 선택사항입니다.
콘솔
Google Cloud 콘솔에서 Kubernetes 클러스터 만들기 페이지로 이동합니다.
탐색창의 클러스터에서 네트워킹을 클릭합니다.
DNS 제공업체 섹션에서 Cloud DNS를 클릭합니다.
클러스터 범위를 선택합니다.
필요에 따라 클러스터를 구성합니다.
만들기를 클릭합니다.
기존 클러스터에서 클러스터 범위 사용 설정
기존 Autopilot 클러스터를 kube-dns에서 Cloud DNS 클러스터 범위로 마이그레이션하는 것은 지원되지 않습니다. Cloud DNS 클러스터 범위를 사용 설정하려면 GKE 버전 1.25.9-gke.400, 1.26.4-gke.500 이상에서 Autopilot 클러스터를 다시 만드세요.
gcloud CLI 또는Google Cloud 콘솔을 사용하여 기존 Standard 클러스터를 kube-dns에서 Cloud DNS 클러스터 범위로 마이그레이션할 수 있습니다.
기존 클러스터를 kube-dns에서 Cloud DNS로 마이그레이션하는 경우 변경사항을 적용하려면 노드를 다시 만들어야 합니다. 각 노드 풀에서 개별적으로 Cloud DNS를 DNS 제공업체로 사용 설정하여 클러스터 통신을 중단하지 않고 애플리케이션이 실행 중인 클러스터를 마이그레이션합니다. 일부 노드 풀은 kube-dns를 사용하고 일부 노드 풀은 Cloud DNS를 사용하므로 노드 하위 집합이 항상 작동합니다.
gcloud
기존 클러스터를 업데이트합니다.
gcloud container clusters update CLUSTER_NAME \ --cluster-dns=clouddns \ --cluster-dns-scope=cluster \ --location=COMPUTE_LOCATION다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름COMPUTE_LOCATION: 클러스터의 Compute Engine 위치
cluster가 기본값이기 때문에--cluster-dns-scope=cluster플래그는 명령어의 선택사항입니다.응답은 다음 예시와 유사합니다.
All the node-pools in the cluster need to be re-created by the user to start using Cloud DNS for DNS lookups. It is highly recommended to complete this step shortly after enabling Cloud DNS. Do you want to continue (Y/n)?확인한 후에는 Cloud DNS 컨트롤러가 GKE 컨트롤 플레인에서 실행됩니다. 하지만 노드 풀을 업그레이드하거나 새 노드 풀을 클러스터에 추가할 때까지 포드는 DNS 변환을 위해 Cloud DNS를 사용하지 않습니다.
Cloud DNS를 사용하도록 클러스터의 노드 풀을 업그레이드하세요.
gcloud container clusters upgrade CLUSTER_NAME \ --node-pool=POOL_NAME \ --location=COMPUTE_LOCATION다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름POOL_NAME: 업그레이드할 노드 풀의 이름
노드 풀과 컨트롤 플레인이 동일한 버전을 실행 중인 경우 먼저 컨트롤 플레인 수동 업그레이드에 설명된 대로 컨트롤 플레인을 업그레이드합니다. 그런 다음 노드 풀 업그레이드를 실행합니다.
응답을 확인하고 클러스터의 각 노드 풀에 이 명령어를 반복하세요. 클러스터에 노드 풀이 한 개이면
--node-pool플래그를 생략하세요.
콘솔
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
수정할 클러스터의 이름을 클릭합니다.
네트워킹의 DNS 제공업체 필드에서 edit DNS 제공업체 수정을 클릭합니다.
Cloud DNS를 클릭합니다.
클러스터 범위를 클릭합니다.
변경사항 저장을 클릭합니다.
추가 VPC 범위 사용 설정
이 섹션에서는 Cloud DNS 클러스터 범위 부가기능으로 추가 VPC 범위를 사용 설정하거나 사용 중지하는 단계를 설명합니다.
새 클러스터에서 추가 VPC 범위 사용 설정
gcloud CLI 또는 Google Cloud 콘솔을 사용하여 새 GKE 클러스터에서 추가 VPC 범위 DNS를 사용 설정할 수 있습니다.
추가 VPC 범위로 Autopilot 클러스터 만들기
gcloud container clusters create-auto CLUSTER_NAME \
--additive-vpc-scope-dns-domain=UNIQUE_CLUSTER_DOMAIN
다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름입니다.UNIQUE_CLUSTER_DOMAIN: 도메인 이름. GKE에서 이 값을 확인하지 않으므로 이 이름은 VPC 내에서 고유해야 합니다. 이 값은 설정한 후에는 변경할 수 없습니다..local로 끝나는 도메인을 사용하면 안 됩니다. 사용하면 DNS 변환 오류가 발생할 수 있습니다.
추가 VPC 범위로 Standard 클러스터 만들기
gcloud container clusters create CLUSTER_NAME \
--cluster-dns=clouddns \
--cluster-dns-scope=cluster \
--additive-vpc-scope-dns-domain=UNIQUE_CLUSTER_DOMAIN
cluster가 기본값이므로 --cluster-dns-scope=cluster 플래그는 선택사항입니다.
다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름입니다.UNIQUE_CLUSTER_DOMAIN: 도메인 이름. GKE에서 이 값을 확인하지 않으므로 이 이름은 VPC 내에서 고유해야 합니다. 이 값은 설정한 후에는 변경할 수 없습니다..local로 끝나는 도메인을 사용하면 안 됩니다. 사용하면 DNS 변환 오류가 발생할 수 있습니다.
기존 Standard 클러스터에서 추가 VPC 범위 사용 설정
기존 Autopilot 클러스터에서 추가 VPC 범위를 사용 설정하는 것은 지원되지 않습니다.
기존 Standard 클러스터에서 추가 VPC 범위를 사용 설정하려면 다음 명령어를 실행합니다.
gcloud container clusters update CLUSTER_NAME \
--additive-vpc-scope-dns-domain=UNIQUE_CLUSTER_DOMAIN \
--location=COMPUTE_LOCATION
다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름입니다.UNIQUE_CLUSTER_DOMAIN: 도메인 이름. GKE에서 이 값을 확인하지 않으므로 이 이름은 VPC 내에서 고유해야 합니다. 이 값은 설정한 후에는 변경할 수 없습니다..local로 끝나는 도메인을 사용하면 안 됩니다. 사용하면 DNS 변환 오류가 발생할 수 있습니다.COMPUTE_LOCATION: 클러스터의 Compute Engine 위치
VPC 범위 DNS 사용 설정
VPC 범위 DNS에서 클러스터의 DNS 이름은 전체 VPC 내에서 변환 가능합니다. VPC의 모든 클라이언트는 클러스터 DNS 레코드를 변환할 수 있습니다.
VPC 범위 DNS는 다음 사용 사례를 사용 설정합니다.
- 동일한 VPC 내의 비GKE 클라이언트에 대한 헤드리스 서비스 검색
- 온프레미스 또는 서드 파티 클라우드 클라이언트의 GKE 서비스 변환 자세한 내용은 인바운드 서버 정책을 참조하세요.
- 클라이언트가 커스텀 클러스터 DNS 도메인을 사용하여 통신할 클러스터를 결정할 수 있는 서비스 변환
다음 다이어그램에서 두 GKE 클러스터는 동일한 VPC에서 VPC 범위 DNS를 사용합니다. 두 클러스터에는 기본 .cluster.local 도메인 대신 커스텀 DNS 도메인 .cluster1 및 .cluster2가 있습니다. VM은 backend.default.svc.cluster1을 변환하여 헤드리스 백엔드 서비스와 통신합니다. Cloud DNS는 서비스의 개별 포드 IP 주소로 헤드리스 서비스를 변환하고 VM은 포드 IP 주소와 직접 통신합니다.
Cloud Interconnect 또는 Cloud VPN을 통해 VPC에 연결되면 다른 네트워크에서 이러한 유형의 변환을 수행할 수도 있습니다. DNS 서버 정책을 사용하면 VPC에 연결된 네트워크의 클라이언트가 Cloud DNS의 이름을 변환할 수 있습니다. 여기에는 클러스터에 VPC 범위 DNS가 사용되는 경우 GKE 서비스가 포함됩니다.
기존 클러스터에서 VPC 범위 사용 설정
VPC 범위로의 마이그레이션은 Standard에서만 지원되며 Autopilot에서는 지원되지 않습니다.
gcloud CLI 또는 Google Cloud 콘솔을 사용하여 기존 Standard 클러스터를 kube-dns에서 Cloud DNS VPC 범위로 마이그레이션할 수 있습니다.
VPC 범위로 이전할 때는 변경사항을 적용하기 위해 노드를 다시 만들어야 합니다.
gcloud
기존 클러스터를 업데이트합니다.
gcloud container clusters update CLUSTER_NAME \ --cluster-dns=clouddns \ --cluster-dns-scope=vpc \ --cluster-dns-domain=CUSTOM_DOMAIN \ --location=COMPUTE_LOCATION다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름입니다.COMPUTE_LOCATION: 클러스터의 Compute Engine 위치CUSTOM_DOMAIN: 도메인 이름. GKE에서 이 값을 확인하지 않으므로 이 이름은 VPC 내에서 고유해야 합니다. 이 값은 설정한 후에는 변경할 수 없습니다..local로 끝나는 도메인을 사용하면 안 됩니다. 사용하면 DNS 변환 오류가 발생할 수 있습니다.
응답은 다음 예시와 유사합니다.
All the node-pools in the cluster need to be re-created by the user to start using Cloud DNS for DNS lookups. It is highly recommended to complete this step shortly after enabling Cloud DNS. Do you want to continue (Y/n)?확인한 후에는 Cloud DNS 컨트롤러가 GKE 컨트롤 플레인에서 실행됩니다. 노드 풀을 업그레이드하거나 새 노드 풀을 클러스터에 추가할 때까지 포드는 DNS 변환을 위해 Cloud DNS를 사용하지 않습니다.
Cloud DNS를 사용하도록 클러스터의 노드 풀을 업그레이드하세요.
gcloud container clusters upgrade CLUSTER_NAME \ --node-pool=POOL_NAME다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름POOL_NAME: 업그레이드할 노드 풀의 이름
노드 풀과 컨트롤 플레인이 동일한 버전을 실행 중인 경우 먼저 컨트롤 플레인 수동 업그레이드에 설명된 대로 컨트롤 플레인을 업그레이드합니다. 그런 다음 노드 풀 업그레이드를 실행합니다.
응답을 확인하고 클러스터의 각 노드 풀에 이 명령어를 반복하세요. 클러스터에 노드 풀이 한 개이면
--node-pool플래그를 생략하세요.
콘솔
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
수정할 클러스터의 이름을 클릭합니다.
네트워킹의 DNS 제공업체 필드에서 edit DNS 제공업체 수정을 클릭합니다.
Cloud DNS를 클릭합니다.
VPC 범위를 클릭합니다.
변경사항 저장을 클릭합니다.
Cloud DNS 확인
GKE용 Cloud DNS가 클러스터에 대해 올바르게 작동하는지 확인하세요.
노드에서 포드에 연결하고
cat /etc/resolv.conf명령어를 실행하여 노드가 Cloud DNS를 사용하는지 확인합니다.kubectl exec -it POD_NAME -- cat /etc/resolv.conf | grep nameserverPOD_NAME을 포드의 이름으로 바꿉니다.클러스터 모드에 따라 출력은 다음과 비슷합니다.
GKE Autopilot 클러스터
nameserver 169.254.20.10GKE Autopilot에서는 기본적으로 NodeLocal DNSCache가 사용 설정되어 있으므로 포드에서 NodeLocal DNSCache를 사용합니다.
로컬 캐시에 조회 중인 이름의 항목이 없는 경우 NodeLocal DNSCache가 요청을 Cloud DNS로 전달합니다.
GKE Standard 클러스터
nameserver 169.254.169.254이 예시 포드는
169.254.169.254을nameserver로 사용하는데, 이는 Cloud DNS 데이터 영역이 포트53에서 요청을 리슨하는 메타데이터 서버의 IP 주소입니다. 노드가 DNS 변환에 더 이상kube-dns서비스 주소를 사용하지 않으며 모든 DNS 변환이 로컬 노드에서 수행됩니다.출력이
10.x.y.10과 유사한 IP 주소이면 포드가kube-dns를 사용하고 있는 것입니다. 포드가 계속kube-dns를 사용하는 이유는 문제 해결 섹션을 참고하세요 .출력이
169.254.20.10이면 클러스터에 NodeLocal DNSCache가 사용 설정되었으며 포드가 NodeLocal DNSCache를 사용하고 있다는 의미입니다.클러스터에 샘플 애플리케이션을 배포합니다.
kubectl run dns-test --image us-docker.pkg.dev/google-samples/containers/gke/hello-app:2.0샘플 애플리케이션을 서비스와 함께 노출합니다.
kubectl expose pod dns-test --name dns-test-svc --port 8080서비스가 성공적으로 배포되었는지 확인합니다.
kubectl get svc dns-test-svc출력은 다음과 비슷합니다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dns-test-svc ClusterIP 10.47.255.11 <none> 8080/TCP 6m10sCLUSTER-IP열의 값은 클러스터의 가상 IP 주소입니다. 이 예시에서 가상 IP 주소는10.47.255.11입니다.서비스 이름이 클러스터의 비공개 DNS 영역에 레코드로 생성되었는지 확인합니다.
gcloud dns record-sets list \ --zone=PRIVATE_DNS_ZONE \ --name=dns-test-svc.default.svc.DOMAIN_NAME.다음을 바꿉니다.
PRIVATE_DNS_ZONE: GKE에서 생성한 관리 DNS 영역의 이름입니다. Google Cloud 콘솔의 Cloud DNS 영역 페이지에서 영역 이름을 찾거나 명명 규칙을 참고하면 됩니다.DOMAIN_NAME: 부가 VPC 범위 없이 클러스터 범위를 사용하는 경우cluster.local, VPC 범위 또는 부가 VPC 범위를 사용 설정할 때 구성한 커스텀 도메인
출력은 다음과 비슷합니다.
NAME: dns-test-svc.default.svc.cluster.local. TYPE: A TTL: 30 DATA: 10.47.255.11
Standard 클러스터에서 Cloud DNS 사용 중지
기본적으로 Cloud DNS가 사용 설정된 상태로 생성된 Autopilot 클러스터에서는 Cloud DNS를 사용 중지할 수 없습니다.
표준에서 VPC 범위를 사용 중지하는 것은 지원되지 않습니다. DNS 제공업체로 kube-dns를 사용하여 클러스터를 다시 만들어야 합니다.
gcloud CLI 또는Google Cloud 콘솔을 사용하여 Standard 클러스터에서 클러스터 범위를 사용 중지하고 kube-dns로 되돌릴 수 있습니다.
gcloud
kube-dns를 사용하도록 클러스터를 업데이트합니다.
gcloud container clusters update CLUSTER_NAME \
--cluster-dns=kube-dns \
--location=COMPUTE_LOCATION
다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름COMPUTE_LOCATION: 클러스터의 Compute Engine 위치
콘솔
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
수정할 클러스터의 이름을 클릭합니다.
네트워킹의 DNS 제공업체 필드에서 edit DNS 제공업체 수정을 클릭합니다.
Kube-dns를 클릭합니다.
변경사항 저장을 클릭합니다.
Cloud DNS를 사용 중지한 후 노드가 변환에 kube-dns를 사용할 수 있으려면 노드 풀을 다시 만들어야 합니다. 이전에 kube-dns을 0개 노드로 확장한 경우 노드에서 DNS 변환에 사용할 수 있도록 kube-dns을 확장해야 합니다. 노드 풀을 다시 만들지 않으면 기존 노드의 포드는 노드가 다시 생성될 때까지 /etc/resolv.conf 파일이 업데이트되지 않으므로 DNS 변환을 위해 Cloud DNS를 계속 사용합니다.
추가 VPC 범위 사용 중지
클러스터에 대해 추가 VPC 범위를 사용 중지하면 VPC 네트워크에 연결된 비공개 영역의 DNS 레코드만 삭제됩니다. GKE 클러스터의 비공개 DNS 영역에 있는 레코드는 클러스터에서 헤드리스 서비스가 삭제될 때까지 GKE용 Cloud DNS에서 관리됩니다.
추가 VPC 범위를 사용 중지하려면 다음 명령어를 실행합니다.
gcloud container clusters update CLUSTER_NAME \
--disable-additive-vpc-scope
CLUSTER_NAME을 클러스터 이름으로 바꿉니다.
이 설정은 클러스터 내에서 DNS 변환을 제공하는 Cloud DNS 클러스터 범위가 사용 설정된 클러스터를 유지합니다.
삭제
이 문서의 연습을 완료한 후에는 다음 단계에 따라 리소스를 삭제하고 계정에 원치 않는 비용이 발생하지 않도록 합니다.
서비스 삭제:
kubectl delete service dns-test-svc포드를 삭제합니다.
kubectl delete Pod dns-test또한 클러스터를 삭제할 수도 있습니다.
문제 해결
Cloud DNS 문제 해결에 대한 자세한 내용은 다음 페이지를 참조하세요.
- GKE의 Cloud DNS에 대한 도움말은 GKE에서 Cloud DNS 문제 해결을 참조하세요.
- Cloud DNS에 대한 자세한 내용은 Cloud DNS 문제 해결을 참조하세요.
- Kubernetes DNS 문제 진단에 대한 일반적인 정보는 DNS 변환 디버깅을 참조하세요.
다음 단계
- GKE가 관리형 DNS를 제공하는 방법에 대한 개요 읽기
- 서비스 및 포드의 DNS를 참조하여 Kubernetes 클러스터에서 DNS가 사용되는 방식에 대한 일반적인 개요 알아보기
- Cloud DNS의 범위 및 계층 구조 알아보기
- 비공개 관리 영역의 로깅 사용 설정 및 사용 중지에 대해 알아봅니다.