쿠버네티스 DNS는 클러스터의 서비스와 DNS 파드를 관리하며, 개별 컨테이너들이 DNS 네임을 해석할 때 DNS 서비스의 IP를 사용하도록 kubelets를 구성한다.
클러스터 내의 모든 서비스(DNS 서버 자신도 포함하여)에는 DNS 네임이 할당된다. 기본적으로 클라이언트 파드의 DNS 검색 리스트는 파드 자체의 네임스페이스와 클러스터의 기본 도메인을 포함한다.
POD 및 SERVICE FQDN으로 찾을 때 신텍스
pod-ip-address.my-namespace.pod.cluster.local
your-svc.your-namespace.svc.cluster.local
POD 안에서 도메인을 찾는 원리
kubelet은 POD를 실행할 때 /etc/resolv.conf 파일안에 CoreDNS 가리키는 IP 주소를 네임서버로 등록한다. /etc/resolv.conf 설정 파일은 DNS를 질의하는 클라이언트가 어디로 요청을 보낼지 판단하기 위한 용도로 사용된다.
Core DNS
쿠버네티스 클러스터 내 POD에서 어떤 도메인을 찾고자 할 때 kube-system 네임스페이스에 실행되고 있는 CoreDNS가 네임서버로 사용된다. 기존에 Kube-DNS가 이 역할을 했는데 1.12버전부터 CoreDNS가 표준으로 채택되었다. 그래서 kubeadm으로 설치하는 경우 CoreDNS가 설치된다.
CoreDNS는 Deployment로 배포되며 Service에 등록되어 각 POD에서 접근된다. CoreDNS의 config파일은 DNS POD내의 /etc/coredns/Corefile에 위치한다. kubectl describe deployment -n kube-system coredns로 deployment의 구성을 보면/etc/coredns Volume이 configmap에 바인딩 되어 있음을 볼 수 있다.
'PaaS > Kubernetes' 카테고리의 다른 글
(Kubernetes) 클러스터 디자인 하기 (0) | 2021.04.11 |
---|---|
(Kubernetes) Ingress (0) | 2021.04.08 |
(Kubernetes) Service (0) | 2021.04.06 |
(Kubernetes) Networking (0) | 2021.04.05 |
(Kubernetes) Storage And Volume (0) | 2021.04.04 |