[CKA] Kubernetes의 CoreDNS
CoreDNS Deployment, kube-dns Service와 Corefile이 클러스터 DNS를 제공하는 구조를 정리합니다.
CoreDNS는 kube-system 네임스페이스에서 Pod로 실행되며, 보통 kube-dns라는 ClusterIP Service가 53번 TCP와 UDP 포트를 제공합니다. kubelet은 Pod의 DNS 서버 주소와 검색 도메인을 구성해 Service 이름을 조회할 수 있게 합니다.
Corefile 전달 구조
CoreDNS의 설정은 coredns ConfigMap의 Corefile에 저장됩니다. Deployment는 이 ConfigMap을 볼륨으로 Pod의 /etc/coredns에 마운트하고 -conf /etc/coredns/Corefile 인자로 읽습니다.
kubectl get pods,svc -n kube-system
kubectl describe pod -n kube-system <coredns-pod>
kubectl get configmap coredns -n kube-system -o yaml
Corefile의 kubernetes cluster.local 항목은 클러스터 DNS 영역을 나타냅니다. forward . /etc/resolv.conf는 클러스터 영역 밖의 질의를 상위 DNS 서버로 전달합니다. cache, loop, reload, loadbalance 같은 플러그인도 함께 구성할 수 있습니다.
.:53 {
errors
health
ready
kubernetes cluster.local in-addr.arpa ip6.arpa
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
실습에서는 CoreDNS Pod, kube-dns Service, Corefile 경로, ConfigMap 마운트와 cluster.local 영역을 차례로 확인합니다.