tencent cloud

피드백

TKE에서 사용자 지정 도메인 이름 레졸루션 구현

마지막 업데이트 시간:2023-04-26 19:23:11

    작업 시나리오

    TKE 또는 Serverless TKE를 사용하는 경우 다음 시나리오에서 사용자 지정 내부 도메인 이름을 레졸루션해야 할 수 있습니다.
    외부 중앙 집중식 스토리지 서비스를 구축하고 클러스터의 모니터링 또는 로그 수집 데이터를 고정된 내부 도메인 이름을 통해 외부 스토리지 서비스로 보내야 합니다.
    기존 서비스의 컨테이너화 중에 일부 서비스의 코드는 고정된 도메인 이름으로 다른 내부 서비스를 호출하도록 구성되며 구성을 수정할 수 없습니다. 즉, Kubernetes의 Service 이름을 호출에 사용할 수 없습니다.

    솔루션

    이 문서에서는 클러스터에서 사용자 지정 도메인 이름 레졸루션을 사용하기 위한 다음 세 가지 솔루션에 대해 설명합니다.
    솔루션
    장점
    이 솔루션은 간단하고 직관적입니다. 임의의 레졸루션 레코드를 추가할 수 있습니다.
    레졸루션 레코드의 IP 주소를 미리 알 필요는 없지만 레졸루션 레코드로 매핑된 IP 주소는 클러스터에 배포되어야 합니다.
    많은 수의 레졸루션 레코드를 관리할 수 있습니다. 모든 레코드는 외부 DNS에서 관리되므로 레코드를 추가하거나 삭제할 때 CoreDNS 구성을 수정할 필요가 없습니다.
    설명
    솔루션1과 솔루션2에서는 레졸루션 레코드를 추가할 때마다 CoreDNS 구성 파일을 수정해야 합니다(다시 시작할 필요 없음). 실제 필요에 따라 솔루션을 선택하십시오.

    예시

    솔루션1: CoreDNS Hosts 플러그인을 사용하여 임의의 도메인 이름 레졸루션 구성

    1. 다음 명령을 실행하여 아래와 같이 CoreDNS의 configmap을 수정합니다.
    kubectl edit configmap coredns -n kube-system
    2. 아래와 같이 hosts에 도메인 이름을 추가하도록 hosts 구성을 수정합니다.
    hosts {
    192.168.1.6 harbor.example.com
    192.168.1.8 es.example.com
    fallthrough
    }
    설명
    harbor.example.com을 192.168.1.6에 매핑하고 es.example.com을 192.168.1.8에 매핑합니다.
    전체 구성 예시는 다음과 같습니다.
    apiVersion: v1
    data:
    Corefile: |2-
    .:53 {
    errors
    health
    kubernetes cluster.local. in-addr.arpa ip6.arpa {
    pods insecure
    upstream
    fallthrough in-addr.arpa ip6.arpa
    }
    hosts {
    192.168.1.6 harbor.example.com
    192.168.1.8 es.example.com
    fallthrough
    }
    prometheus :9153
    forward . /etc/resolv.conf
    cache 30
    reload
    loadbalance
    }
    kind: ConfigMap
    metadata:
    labels:
    addonmanager.kubernetes.io/mode: EnsureExists
    name: coredns
    namespace: kube-system

    솔루션2: CoreDNS Rewrite 플러그인을 사용하여 도메인 이름을 클러스터의 서비스에 매핑

    클러스터에 사용자 지정 도메인 이름이 있는 서비스를 배포하려면 CoreDNS의 Rewrite 플러그인을 사용하여 지정된 도메인 이름을 Service의 ClusterIP로 확인할 수 있습니다.
    1. 다음 명령을 실행하여 아래와 같이 CoreDNS의 configmap을 수정합니다.
    kubectl edit configmap coredns -n kube-system
    2. 다음 명령을 실행하여 아래와 같이 Rewrite 구성을 추가합니다.
    rewrite name es.example.com es.logging.svc.cluster.local
    설명
    es.example.comlogging 네임스페이스 아래에 배포된 es 서비스에 매핑합니다. 캐리지 리턴으로 여러 도메인 이름을 구분하십시오.
    전체 구성 예시는 다음과 같습니다.
    apiVersion: v1
    data:
    Corefile: |2-
    .:53 {
    errors
    health
    kubernetes cluster.local. in-addr.arpa ip6.arpa {
    pods insecure
    upstream
    fallthrough in-addr.arpa ip6.arpa
    }
    rewrite name es.example.com es.logging.svc.cluster.local
    prometheus :9153
    forward . /etc/resolv.conf
    cache 30
    reload
    loadbalance
    }
    kind: ConfigMap
    metadata:
    labels:
    addonmanager.kubernetes.io/mode: EnsureExists
    name: coredns
    namespace: kube-system

    솔루션3: CoreDNS Forward 플러그인을 사용하여 외부 DNS를 업스트림 DNS로 설정

    1. forward 구성을 확인합니다. forward의 기본 설정은 다음과 같습니다. 즉, 클러스터에 없는 도메인 이름은 CoreDNS가 위치한 노드의 /etc/resolv.conf 파일에 구성된 nameserver로 레졸루션됩니다.
    forward . /etc/resolv.conf
    2. 다음과 같이 forward를 구성하고 /etc/resolv.conf를 명시적으로 외부 DNS 서버 주소로 바꿉니다.
    forward . 10.10.10.10
    전체 구성 예시는 다음과 같습니다.
    apiVersion: v1
    data:
    Corefile: |2-
    .:53 {
    errors
    health
    kubernetes cluster.local. in-addr.arpa ip6.arpa {
    pods insecure
    upstream
    fallthrough in-addr.arpa ip6.arpa
    }
    prometheus :9153
    forward . 10.10.10.10
    cache 30
    reload
    loadbalance
    }
    kind: ConfigMap
    metadata:
    labels:
    addonmanager.kubernetes.io/mode: EnsureExists
    name: coredns
    namespace: kube-system
    3. 외부 DNS에 대한 사용자 지정 도메인 이름의 레졸루션 레코드를 구성합니다. 외부 DNS의 업스트림 노드의 /etc/resolv.conf에 nameserver를 추가하는 것을 권장합니다. 일부 서비스는 Tencent Cloud 내부 DNS 레졸루션에 의존하기 때문에 자체 구축 DNS의 업스트림으로 설정하지 않으면 일부 서비스가 제대로 작동하지 않을 수 있습니다. 이 문서는 아래와 같이 구성 파일을 수정하고 forwarders에 업스트림 DNS 주소를 쓰는 예시로 BIND 9를 사용합니다.
    참고
    외부 DNS Server와 요청 소스가 동일한 Region에 있지 않으면 리전 간 액세스를 지원하지 않는 일부 Tencent 도메인 이름이 무효화될 수 있습니다.
    options {
    forwarders {
    183.60.83.19;
    183.60.82.98;
    };
    ...

    참고 문서

    문의하기

    고객의 업무에 전용 서비스를 제공해드립니다.

    기술 지원

    더 많은 도움이 필요하시면, 티켓을 통해 연락 바랍니다. 티켓 서비스는 연중무휴 24시간 제공됩니다.

    연중무휴 24시간 전화 지원