버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

https://kubernetes.io/ko/docs/concepts/cluster-administration/networking/

...

4. CoreDNS

4.1 CoreDNS 주요 플러그인

(1) kubernetes

  • Kubernetes 클러스터 내의 서비스와 파드를 위한 DNS 서비스를 제공합니다.

(2) forward

  • DNS 요청을 외부 DNS 서버로 포워딩합니다.

(3) cache

  • DNS 응답을 캐싱하여 성능을 향상시킵니다.

(4) loadbalance

  • DNS 응답을 라운드 로빈 방식으로 로드 밸런싱합니다.

CoreDNS 기본 설정

코드 블럭
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }

4.2 CoreDNS 설정에서 외부 DNS 서버 추가

(1) 설정 수정

코드 블럭
kubectl -n kube-system edit configmap coredns

(2) 외부 DNS 서버 추가

  • forward . 192.168.255.100:53

코드 블럭
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . 192.168.255.100:53
        cache 30
        loop
        reload
        loadbalance
    }

(3) 설정 적용을 위한 coredns 파드 재시작

코드 블럭
kubectl -n kube-system rollout restart deployment coredns

4.3 특정 도메인 호출 시 외부 IP로 포워딩

  • webservice1.com 도메인 호출시 클러스터 외부IP(172.16.0.3)로 포워딩 설정

(1) 설정 수정

코드 블럭
kubectl -n kube-system edit configmap coredns

(2) 외부 DNS 서버 추가

  • forward . 192.168.255.100:53

코드 블럭
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
        hosts {
            172.16.0.3 webservice1.com
            fallthrough
        }
    }

(3) 설정 적용을 위한 coredns 파드 재시작

코드 블럭
kubectl -n kube-system rollout restart deployment coredns

4.4 특정 도메인 호출 시 도메인 이름 변경

  • webservice1.com 도메인 호출시 클러스터 외부IP(172.16.0.3)로 포워딩 설정

(1) 설정 수정

코드 블럭
kubectl -n kube-system edit configmap coredns

(2) rewrite 플러그인 내용 추가

  • [web-service.cluster.local] 요청을 [webservice1.com]로 변경하여 처리

코드 블럭
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
        rewrite name web-service.cluster.local webservice1.com
    }

(3) 설정 적용을 위한 coredns 파드 재시작

코드 블럭
kubectl -n kube-system rollout restart deployment coredns