일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ElasticSearch
- Effective Java
- effectivejava
- 엘라스틱서치
- 오블완
- 알고리즘정렬
- java
- JavaScript
- 자바
- 코딩테스트
- 스프링
- k8s
- 스프링부트
- 예제로 배우는 스프링 입문
- 클린아키텍처
- 이펙티브자바
- 알고리즘
- 이펙티브 자바
- 티스토리챌린지
- 자바스크립트
- 이차전지관련주
- Sort
- 스프링핵심원리
- Spring
- Effective Java 3
- 김영한
- 스프링 핵심원리
- 카카오
- 카카오 면접
- kubernetes
- Today
- Total
Kim-Baek 개발자 이야기
Kubernetes 의 내부도메인 본문
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의 동작 방식
- DNS 요청 수신: 클러스터 내의 파드나 서비스가 도메인 네임 조회 요청을 보냅니다.
- CoreDNS 처리: CoreDNS는 Corefile 설정을 기반으로 요청을 처리합니다.
- 응답 반환: 요청에 대한 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 |