TIL

k3s 컨테이너에서 외부 DNS 확인

하얀잔디 2026. 2. 10. 16:58

1. Kubernetes 파드 DNS 기본 동작

쿠버네틱스에서 파드의 DNS 요청은 무조건 CoreDNS를 먼저 탐.

 

기본 흐름은 다음과 같음.

 
파드 → CoreDNS → 노드 DNS → 외부 DNS

 

 파드는 외부 DNS를 직접 보지 않음

 

CoreDNS가 모든 요청의 관문 역할함

 

2. CoreDNS 기본 설정

보통 기본 CoreDNS 설정은 이렇게 되어 있음.

 
forward . /etc/resolv.conf

의미는 이거임.

  • CoreDNS에서 내부 서비스(*.cluster.local)는 직접 처리
  • CoreDNS가 모르는 외부 도메인은
  • 노드의 /etc/resolv.conf 설정을 그대로 따라감

즉 흐름은:

 
파드 → CoreDNS → 노드 DNS(systemd-resolved 등) → 외부/사내 DNS

3. /etc/resolv.conf에 127.0.0.53이 보이는 이유

 

노드에서 보면 /etc/resolv.conf에 보통 이렇게 나옴.

 
nameserver 127.0.0.53

이건 외부 DNS가 아님.

  • systemd-resolved의 로컬 stub resolver
  • 실제 DNS 서버는 따로 있음

진짜 DNS는 아래 명령으로 확인함.

 
resolvectl dns
 
Link 2 (eth0): 172.31.12.xx 172.31.12.xx

즉 실제로는 특정 DNS를 사용 중임.


4. CoreDNS에서 바로 특정 DNS로 보내고 싶을 때

노드 DNS 설정과 무관하게
CoreDNS에서 바로 사내 DNS로 질의하고 싶을 때가 있음.

그럴 땐 CoreDNS 설정을 이렇게 바꿈.

변경 전

 
forward . /etc/resolv.conf

변경 후

 
forward . 172.31.12.11  172.31.12.12

 

이렇게 하면 DNS 흐름이 다음처럼 됨.

 
파드 → CoreDNS → 특정 DNS
  • systemd-resolved 안 탐
  • 노드 DNS 설정 영향 없음
  • 보안/감사 설명하기 쉬움