Kim-Baek 개발자 이야기

Kubernetes 의 내부도메인 본문

개발/k8s

Kubernetes 의 내부도메인

김백개발자 2024. 11. 19. 13:38

1. Kubernetes의 내부 도메인 개요

Kubernetes 클러스터 내에서는 다양한 리소스(서비스, 파드 등)들이 서로 통신할 수 있도록 내부 DNS 네임을 제공합니다. 이 내부 도메인 네임은 외부에서 접근할 수 없으며, 클러스터 내부에서만 해석되고 사용됩니다.

1.1. 클러스터 내부 도메인의 필요성

  • 서비스 디스커버리(Service Discovery): 마이크로서비스 아키텍처에서 각 서비스가 서로를 쉽게 찾고 통신할 수 있도록 합니다.
  • 유연한 네트워킹: 다양한 네임스페이스(namespace)와 서비스를 효율적으로 관리할 수 있습니다.
  • 보안: 내부 통신만을 허용하여 외부 접근을 제한함으로써 보안을 강화합니다.

2. Kubernetes 내부 DNS 아키텍처

Kubernetes는 클러스터 내 DNS 서비스를 제공하기 위해 CoreDNS를 사용합니다. CoreDNS는 클러스터 내의 서비스와 파드에 대한 DNS 쿼리를 처리하고, 이를 통해 내부 도메인 네임을 해석합니다.

2.1. CoreDNS란?

  • 정의: CoreDNS는 Kubernetes 클러스터에서 공식적으로 지원하는 DNS 서버로, 클러스터 내부의 도메인 네임 해석을 담당합니다.
  • 역할:
    • 서비스와 파드 간의 DNS 쿼리 처리
    • 외부 DNS 서버와의 통신 관리
    • 플러그인 아키텍처를 통한 확장성 제공

2.2. CoreDNS의 동작 방식

  1. DNS 요청 수신: 클러스터 내의 파드나 서비스가 도메인 네임 조회 요청을 보냅니다.
  2. CoreDNS 처리: CoreDNS는 Corefile 설정을 기반으로 요청을 처리합니다.
  3. 응답 반환: 요청에 대한 DNS 응답을 클라이언트(요청한 파드나 서비스)에게 반환합니다.

3. Kubernetes 내부 도메인의 구조

Kubernetes 내부 도메인은 표준화된 네임 스페이스를 따릅니다. 기본적으로 다음과 같은 형식을 가집니다:

<서비스 이름>.<네임스페이스>.svc.cluster.local

3.1. 도메인 구성 요소 상세 설명

  • 서비스 이름(Service Name): Kubernetes 서비스의 이름입니다.
  • 네임스페이스(Namespace): 서비스를 구분짓는 Kubernetes의 논리적 분리 단위입니다.
  • svc: 서비스 유형을 나타내는 고정된 문자열입니다.
  • cluster.local: Kubernetes 클러스터의 기본 도메인 네임입니다. 필요에 따라 변경할 수 있습니다.

3.2. 예시

예를 들어, payments라는 서비스가 finance라는 네임스페이스에 있다고 가정하면, 이 서비스의 내부 도메인 네임은 다음과 같습니다:

payments.finance.svc.cluster.local

3.3. 네임스페이스 별 내부 도메인

네임스페이스 간에도 도메인 네임이 명확하게 구분되기 때문에, 같은 이름의 서비스를 다른 네임스페이스에 생성해도 충돌이 발생하지 않습니다.

예:

  • payments.finance.svc.cluster.local
  • payments.marketing.svc.cluster.local

4. Kubernetes 내부 도메인의 주요 특징

4.1. 클러스터 내부 전용

내부 도메인은 클러스터 외부에서는 접근할 수 없습니다. 외부에서 접근이 필요할 경우, Ingress, LoadBalancer 서비스 등을 통해 외부 노출을 설정해야 합니다.

4.2. 서비스 디스커버리 지원

서비스 이름을 도메인 네임으로 사용함으로써, 클러스터 내 서비스 간의 통신을 용이하게 합니다. 예를 들어, payments.finance.svc.cluster.local을 통해 payments 서비스에 접근할 수 있습니다.

4.3. 자동화된 DNS 레코드 생성

Kubernetes는 서비스가 생성되면 자동으로 DNS 레코드를 생성합니다. 이를 통해 개발자는 추가적인 DNS 설정 없이도 서비스를 쉽게 발견하고 접근할 수 있습니다.


5. Kubernetes 내부 도메인 활용 방법

5.1. 내부 통신 설정

서비스 간 통신 시, 내부 도메인 네임을 사용하여 안정적이고 신뢰성 높은 접근을 할 수 있습니다.

예시:

apiVersion: v1
kind: Service
metadata:
  name: payments
  namespace: finance
spec:
  selector:
    app: payments
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

이 서비스에 접근하려면 다음과 같은 주소를 사용할 수 있습니다:

http://payments.finance.svc.cluster.local
반응형

'개발 > k8s' 카테고리의 다른 글

Kubernetes StatefulSets  (0) 2020.09.20
Kubernetes Service, Deployment  (0) 2020.09.02
Kubernetes Pod  (0) 2020.09.01
Comments