CKA 공부 37일차
in Devops on Kubernetes
DNS in kubernetes
k8s에서의 DNS에 대하여 공부해보자
노드의 이름과 IP는 DNS 서버에 저장된다.
k8s 클러스터가 셋팅되면 쿠버네티스 내장 DNS 서버를 디폴트로 배포한다.
두 개의 파드와 서비스가 있다고 해보자.
A 파드에는 서비스가 없고 B 파드에는 서비스가 있다고 가정해보자.
두 파드 사이에는 IP로도 닿을 수 있지만 A 파드는 B 파드와 연결된 서비스 이름으로도 요청을 보낼 수 있다. (같은 네임스페이스에 있다고 가정)
이는 k8s 내장 DNS에 서비스에 대한 IP가 등록되어있기 때문이다.
만약 두 A, B 둘이 다른 네임스페이스에 있다면 어떨까?, 그러면 요청을 보낼 때 해당 서비스 이름에
.
을 붙이고 네임스페이스명을 붙이면 된다.가령 서비스 명이 web-service고 네임스페이스가 apps라면
http://web-service.apps
와 같은 형식이다.이같은 방식이 가능한 이유는 DNS 서버가 서브도메인을 네임스페이스로 사용하고 있기 때문이다.
또한 그 이후에 타입을 명시할 수 있는데, 서비스의 경우
svc
이다.마지막으로 루트 도메인이 있는데, 기본적으로
cluster.local
이 기본값으로 설정된다.이를 형태로 나타내보면 아래와 같다.
HostName + Namespace + Type + Root => IP Address
web-service.apps.svc.cluster.local => 10.107.37.188
- 파드의 이름 역시 Hostname으로 설정이 가능한데, 가령 10.244.2.5는
10-244-2-5
가 된다.
HostName + Namespace + Type + Root => IP Address
10-244-2-5.apps.svc.cluster.local => 10.244.2.5