CKA 공부 37일차

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




© 2022. by minkuk

Powered by minkuk