본문 바로가기
DevOps/Kubernetes

[Kubernetes] CoreDNS: Kubernetes 네트워킹의 핵심을 파헤치다

by Yoon_estar 2025. 2. 8.
728x90
반응형

개요

쿠버네티스에서 네트워킹을 관리할 때, CoreDNS는 필수적인 구성 요소로 돋보입니다. 쿠버네티스 클러스터의 기본 DNS 서버 역할을 하는 CoreDNS는 서비스 디스커버리와 name resolution이 원활히 작동하도록 보장하는 데 중요한 역할을 합니다. 이번 블로그에서는 CoreDNS가 뭔지, 쿠버네티스에서 어떤 역할을 하는지, 그리고 컨테이너 오케스트레이션에서 왜 필수적인지 자세히 알아보겠습니다. 

 

CoreDNS란?

CoreDNS는 유연하고 확장 가능한 DNS 서버로, 쿠버네티스 클러스터의 DNS 서버 역할을 수행합니다. 이 프로젝트는 쿠버네티스처럼 Cloud Native Computing Foundation(CNCF)에서 관리합니다. 

CoreDNS는 Go 언어로 작성되었으며, 다양한 환경에서 사용할 수 있는 높은 유연성을 자랑합니다. 

 

쿠버네티스에서의 CoreDNS의 역할

쿠버네티스에서 coreDNS는 Kube-system 네임 스페이스에 배포로 설치됩니다. 일반적으로 CoreDNS는 고정 IP 주소를 가진 Kubernetes Service로 노출되며, 각 컨테이너는 kubelet에 의해 --cluster-dns=<dns-service-ip> 플래그를 통해 DNS 정보가 전달됩니다. 

CoreDNS는 쿠버네티스 플러그인(Kubernetes plugin)을 통해 쿠버네티스와 통합됩니다. 이 플러그인은 DNS 기반 서비스 디스커버리 규격(DNS-Based Service Discovery Specification)을 구현하여, CoreDNS가 기존 kube-dns를 대처하도록 합니다.

 

CoreDNS의 주요 기능

서비스 디스커버리(Service Discovery)

CoreDNS는 서비스가 생성될 때 서비스 이름을 클러스터 IP 주소로 자동으로 매핑합니다. 

유연한 구성

CoreDNS는 Corefile이라는 설정 파일을 사용하며, 이는 쿠버네티스의 ConfigMap을 통해 쉽게 커스터마이징할 수 있습니다. 

플러그인 아키텍처 

CoreDNS는 플러그인 아키텍처로 설계되어 있어 새로운 기능을 쉽게 확장할 수 있습니다.

성능 최적화 

CoreDNS는 캐싱 및 로드 밸런싱 기능을 제공하여 효율적인 DNS 쿼리 처리를 지원합니다. 

모니터링

CoreDNS는 Prometheus 메트릭을 통해 클러스터 네트워킹 상태를 모니터링 할 수 있습니다. 

 

 

쿠버네티스에서 DNS 이름 구조

coreDNS는 쿠버네티스에서 특정 DNS 이름 구조를 따릅니다.

  • 서비스 이름 : <service-name>.<namespace>.svc.cluster.local
  • 파드 이름 : <pod-ip-address>.<namespace>.pod.cluster.local

Example

  • default 네임 스페이스에 있는 web-ui-svc라는 서비스는 다음과 같은 DNS 이름을 갖습니다. 
web-ui-svc.default.svc.cluster.local

 

CoreDNS 테스트 방법

CoreDNS가 제대로 작동하는지 확인하려면 busybox 파드를 사용하여 테스트할 수 있습니다. 

  • Busybox 파드 생성
# kubectl run dns-test --image=busybox:1.28 -it -- /bin/sh

 

  • 파드 내부에서 nslookup을 사용하여 DNS 확인
# nslookup web-ui-svc

 

CoreDNS 와 쿠버네티스 버전 관리, 관계

CoreDNS 는 쿠버네티스 버전과 연동되어 있습니다. 예를 들어 쿠버네티스 1.32에서는 CoreDNS v1.11.3이 kubeadm에 의해 설치됩니다. 새로운 기능 추가 또는 사용 중단이 발생할 수 있으므로, CoreDNS와 쿠버네티스의 버전 변경 사항을 주의 깊게 확인해야 합니다. 

이에 관련한 내용은 다른 글에서 포스팅하였습니다. 

2025.01.28 - [DevOps/Kubernetes] - [Kubernetes] CoreDNS & 쿠버네티스 버전의 관계

 

[Kubernetes] CoreDNS & 쿠버네티스 버전의 관계

개요CoreDNS는 쿠버네티스 버전에 연동됩니다. 예를 들어, 쿠버네티스 1.32에서는 CoreDNS v1.11.3이 kubeadm에 으해 기본적으로 설치됩니다. 그렇다면, 쿠버네티스 1.32 이후 버전에서는 CoreDNS를 따로 설

www.estar987.com

 

반응형