
/etc/resolv.conf에 클러스터 DNS가 자동으로 설정됨web-serviceappsweb-service.apps.svc.cluster.local
[서비스명].[네임스페이스].svc.cluster.local
| 구성요소 | 의미 |
|---|---|
web-service | 서비스 이름 |
apps | 네임스페이스 |
svc | 서비스(Service) 도메인 |
cluster.local | 클러스터 기본 도메인 (변경 가능) |
→ 동일 네임스페이스 내에서는 web-service만으로도 접근 가능
| 상황 | 도메인 이름 |
|---|---|
| 같은 네임스페이스 | web-service |
| 다른 네임스페이스 | web-service.apps |
| FQDN 전체 | web-service.apps.svc.cluster.local |
[IP-주소를-하이픈으로-변환].[네임스페이스].pod.cluster.local
| Pod IP | DNS 이름 |
|---|---|
10.244.1.5 | 10-244-1-5.default.pod.cluster.local |
→ 이 도메인을 통해 Pod 직접 접근 가능
| 구분 | 서비스 DNS | Pod DNS |
|---|---|---|
| 기본 활성화 | ✅ | ❌ (옵션) |
| 이름 형태 | 서비스.네임스페이스.svc.cluster.local | IP변환.네임스페이스.pod.cluster.local |
| 사용 목적 | 일반적인 통신 | 디버깅, 특수한 목적 |
| 추천 | ✅ | 제한적 사용 |
1️⃣ Pod 생성 시 /etc/resolv.conf에 클러스터 DNS 서버가 자동으로 등록
2️⃣ Pod가 서비스명을 호출하면 CoreDNS가
svc.cluster.local 도메인에서 이름을 해석
3️⃣ CoreDNS는 Kubernetes API와 연동해 Service IP를 조회하고 응답
4️⃣ 클라이언트는 Service IP로 트래픽을 전달
nslookup web-service
dig web-service.apps.svc.cluster.local
kubectl exec -it <pod-name> -- nslookup web-service
CoreDNS ConfigMap 수정apiVersion: v1
kind: ConfigMap
metadata:
name: coredns
namespace: kube-system
data:
Corefile: |
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods verified # ← pod DNS 활성화
fallthrough in-addr.arpa ip6.arpa
}
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
--cluster-domain=<도메인명>
예:
--cluster-domain=internal.company.com
→ FQDN은
web-service.apps.svc.internal.company.com으로 변환
http://db-service:3306http://db-service.database.svc.cluster.local:3306ping 10-244-1-5.default.pod.cluster.local