클러스터의 DNS 구성

이 문서에서는 관리자 클러스터 또는 사용자 클러스터에 대해 DNS를 구성하는 방법을 설명합니다.

클러스터의 DNS 구성은 default라는 ClusterDNS 커스텀 리소스에 보관됩니다. 이는 클러스터 전체 리소스입니다. 즉, 네임스페이스가 아닙니다.

ClusterDNS 리소스 보기

ClusterDNS 리소스를 보려면 다음 안내를 따르세요.

kubectl --kubeconfig CLUSTER_KUBECONFIG get clusterdns default --output yaml

CLUSTER_KUBECONFIG를 클러스터 kubeconfig 파일의 경로로 바꿉니다.

DNS 구성은 spec 섹션에 있습니다. spec 섹션이 비어 있거나 누락된 경우 클러스터는 기본 Kubernetes CoreDNS 구성을 사용합니다.

DNS 구성 변경

default라는 ClusterDNS 리소스의 매니페스트를 만듭니다. 원하는 대로 spec을 입력합니다. 예를 들면 다음과 같습니다.

apiVersion: networking.gke.io/v1alpha1
kind: ClusterDNS
metadata:
  name: default
spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 8.8.4.4
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.0.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: private

my-dns.yaml 파일에 매니페스트를 저장하고 리소스를 클러스터에 적용합니다.

kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f my-dns.yaml

ClusterDNS 사양

spec.upstreamNameservers

객체 각각에 서버 IP 주소와 서버 포트(선택사항)가 있는 객체 배열 서버 포트의 기본값은 53입니다.

기본 업스트림 네임서버입니다. 클러스터가 아닌 도메인에 대한 요청은 기본적으로 이 서버 집합으로 전달됩니다. 예를 들면 다음과 같습니다.

spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 1.2.3.4
    serverPort: 54

upstreamNameservers에 값을 지정하지 않으면 DNS 제공업체는 노드의 /etc/resolve.conf 파일을 사용하여 업스트림 네임서버 목록을 찾습니다.

spec.domains

특정 도메인에 대한 구성입니다. 이렇게 하면 upstreamNameservers에서 구성을 재정의할 수 있습니다.

이 섹션을 사용하여 기본 업스트림 네임서버와 별도로 특정 도메인에 대해 다른 업스트림 네임서버를 구성할 수 있습니다.

도메인에 대해 쿼리 로깅을 사용 설정할 수도 있습니다. 이 작업은 지정된 도메인 또는 클러스터 도메인(cluster.local)에 수행할 수 있습니다.

예를 들면 다음과 같습니다.

spec:
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 203.0.113.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 198.51.100.1
    - serverIP: 198.51.100.2
      serverPort: 50000
  - name: cluster.local
    queryLogging: true

spec.googleAccess

문자열. Google Domains를 비공개 액세스 IP 주소로 확인하려면 이를 "private"로 설정합니다. Google Domains를 제한된 액세스 IP 주소로 확인하려면 이를 restricted로 설정합니다. Google Domains를 특별한 방식으로 처리하지 않으려면 이를 default로 설정하거나 삭제합니다. 자세한 내용은 온프레미스 호스트의 비공개 Google 액세스 구성을 참조하세요.

예를 들면 다음과 같습니다.

spec:
  googleAccess: private