클러스터의 DNS 구성

이 문서에서는 Google Distributed Cloud에 대한 DNS(도메인 이름 시스템) 제공업체 옵션을 구성하는 방법을 보여줍니다. 클러스터의 DNS 구성은 default라는 ClusterDNS 커스텀 리소스에 보관됩니다. 이 리소스는 클러스터 전체에 적용됩니다. 즉, 네임스페이스가 아닙니다. ClusterDNS 커스텀 리소스는 모든 클러스터 유형에 적용됩니다.

ClusterDNS 리소스 만들기

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.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: default

매니페스트를 my-dns.yaml이라는 파일에 저장하고 리소스를 클러스터에 적용하려면 다음 명령어를 실행합니다.

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

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

ClusterDNS 리소스 보기

ClusterDNS 리소스를 보려면 다음 명령어를 실행합니다.

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

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

ClusterDNS 사양

다음 섹션에서는 클러스터의 DNS를 구성하는 데 사용하는 ClusterDNS 커스텀 리소스 정의의 일부를 설명합니다. 언제든지 클러스터에 대한 ClusterDNS 리소스를 업데이트할 수 있습니다.

spec.upstreamNameservers

spec.upstreamNameservers 필드를 사용하여 객체 배열로 기본 업스트림 네임서버를 지정합니다. 각 객체에는 서버 IP 주소와 서버 포트(선택사항)가 있습니다. 서버 포트의 기본값은 53입니다. 클러스터가 아닌 도메인에 대한 요청은 기본적으로 이 서버 집합으로 전달됩니다.

다음은 upstreamNameservers 구성 예시입니다.

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

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

spec.domains

spec.domains 필드를 사용하여 특정 도메인에 대해 다른 업스트림 네임서버를 구성합니다. 이러한 도메인별 네임서버 설정은 upstreamNameservers의 구성을 재정의합니다.

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

다음은 spec.domains 구성 예시입니다.

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

spec.googleAccess

spec.googleAccess 필드는 전역 Google API 및 서비스에서 사용하는 도메인의 DNS 확인을 구성하는 문자열입니다. 이 필드는 다음 값을 허용합니다.

  • default: 기본적으로 DNS 변환은 전역 Google API 도메인을 기본 IP 주소에 매핑합니다. 클러스터는 전역 Google API 도메인의 DNS 확인을 맞춤설정하지 않습니다. 자세한 내용은 기본 도메인의 IP 주소를 참조하세요. googleAccess 필드에 값을 지정하지 않으면 시스템에서 default를 사용합니다.

  • private: 전역 Google API 도메인의 DNS 확인을 주소에 매핑합니다.private.googleapis.com

  • restricted: 전역 Google API 도메인의 DNS 변환을 restricted.googleapis.com에서 사용하는 IP 주소에 매핑합니다.

다음 예는 DNS 확인을 설정하여 private.googleapis.com을 사용하는 방법을 보여줍니다.

spec:
  googleAccess: private

자세한 내용은 온프레미스 호스트의 비공개 Google 액세스 구성을 참조하세요.

spec.orderPolicy

spec.orderPolicy 필드는 문자열입니다. 이 필드를 사용하여 업스트림 서버를 선택하는 순서 지정 정책을 지정합니다.

  • 기본값은 random입니다.
  • 지원되는 유형은 random,round_robin, sequential입니다.
  • 이 순서 지정 정책은 정의된 도메인에도 적용됩니다.

policy 및 각 구성의 기능에 대한 자세한 내용은 coredns 문서를 참조하세요.

다음은 spec.orderPolicy 구성 예시입니다.

spec:
  orderPolicy: sequential