[Networking] DNS in Kuberntes

IMKUNYOUNG·2024년 6월 30일
0

KCNA

목록 보기
20/56

이번 글에서는 Kubernetes 클러스터에서 DNS가 어떻게 작동하는지, 그리고 이를 통해 파드와 서비스가 서로 어떻게 통신하는지 알아보겠습니다. 클러스터 내의 다양한 구성 요소 간의 DNS 해결 방법에 대해 자세히 설명드리겠습니다.

Kubernetes 클러스터의 DNS 개요

Kubernetes 클러스터를 설정할 때, 기본적으로 내장된 DNS 서버가 배포됩니다. 이 DNS 서버는 클러스터 내의 서비스와 파드가 서로를 쉽게 찾고 통신할 수 있도록 도와줍니다. 만약 Kubernetes를 수동으로 설정한 경우, 직접 DNS 서버를 설정해야 할 수도 있습니다.

클러스터 내의 네임스페이스

Kubernetes에서는 네임스페이스를 사용하여 클러스터 내의 리소스를 논리적으로 분리할 수 있습니다. 동일한 네임스페이스 내에서는 단순히 리소스의 이름만으로 접근할 수 있지만, 다른 네임스페이스에 있는 리소스에 접근하려면 전체 이름을 사용해야 합니다. 예를 들어, web-service라는 서비스가 apps 네임스페이스에 있다면, default 네임스페이스에서 이를 참조하려면 web-service.apps라고 해야 합니다.

서비스 DNS 레코드

서비스가 생성될 때마다 Kubernetes DNS 서비스는 해당 서비스에 대한 DNS 레코드를 생성합니다.
이 레코드는 서비스 이름을 IP 주소에 매핑합니다. 예를 들어, web-service라는 이름의 서비스가 IP 10.107.37.188을 받았다면, 클러스터 내의 모든 파드는 이 서비스 이름을 사용하여 서비스에 접근할 수 있습니다.

DNS 레코드는 다음과 같은 형식으로 생성됩니다:

  • 서비스 이름: web-service
  • 네임스페이스: apps
  • 서브도메인: svc
  • 루트 도메인: cluster.local

따라서 완전한 도메인 이름(FQDN)은 web-service.apps.svc.cluster.local이 됩니다.

파드 DNS 레코드

기본적으로 파드에 대한 DNS 레코드는 생성되지 않습니다. 그러나 이를 명시적으로 활성화할 수 있습니다. 활성화되면 파드에 대한 레코드가 생성되며, 파드 이름 대신 IP 주소를 기반으로 생성됩니다. 예를 들어, IP 10.244.1.5를 가진 테스트 파드는 10-244-1-5.default.pod.cluster.local이라는 DNS 이름을 가지게 됩니다.

마무리

Kubernetes 클러스터에서 DNS는 매우 중요한 역할을 합니다. 이를 통해 클러스터 내의 파드와 서비스가 서로를 쉽게 찾고 통신할 수 있습니다. 서비스와 파드의 DNS 레코드를 이해함으로써, 더욱 효율적이고 관리하기 쉬운 클러스터를 운영할 수 있습니다.

0개의 댓글