CKA 공부 38일차
in Devops on Kubernetes
Core DNS in k8s
두 파드가 서로 호스트명으로 통신하는 가장 쉬운 방법은 무엇일까?
두 파드가 서로의 호스트에 있는
/etc/hosts
파일에 이름과 IP 주소를 기입함으로써 두 파드는 서로 이름으로 통신이 가능하다.수 백, 수 천개의 파드가 생성되는 k8s 환경에서 이는 좋은 방법이 아니다.
이를 위해 중앙 DNS 서버를 이용할 수 있다.
이를 위해 각 호스트에
/etc/resolv.conf
파일에 네임서버의 호스트명과 IP만 명시해두면 된다.k8s의 파드는 호스트명을
.
을-
로 바꿔서 부르는데, 이는 k8s의 DNS 서버에서 사용하는 방식이며 우리는 이를CoreDNS
라고 부른다.CoreDNS
는 파드로 배포되며kube-system
네임스페이스로 배포된다.DNS 서버는 DNS 파드를 위한 서비스를 갖고 있으며, 새로운 파드가 생성될 때
kubelet
이 파드의/etc/resolv.conf
에 DNS 서버 주소가 적힌 파일을 생성한다.이
kubelet
의 설정파일인/var/lib/kubelet/config.yaml
에는 clusterDNS 서버의 IP 주소와 클러스터 도메인이 있는 것을 볼 수 있다.