...
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 |