쿠버네티스 입문 - 10 - 쿠버네티스 DNS
2020. 4. 8. 23:49ㆍ[정리] 기능별 개념 정리/Kubernetes
쿠버네티스 DNS
파드 사이에 통신할 때 IP 가 아닌 도메인을 사용할 수 있다.
특정 서비스에 접근하는 도메인은 "서비스이름.네임스페이스.svc.cluster.local" 이다.
특정 파드에 접근하는 도메인은 "파드IP주소.네임스페이스.pod.cluster.local" 이다.
하지만 파드의 IP 를 도메인에 포함시키면 도메인을 사용할 이유가 없다.
DNS 를 클라이언트나 API 게이트웨이가 호출할 서비스를찾는 서비스 디스커버리 용도로 사용할 수 도 있다.
DNS 질의 구조
DNS 도 쿠버네티스 클러스터 안에서 파드로 실행되는 것이다.
파드마다 도메인이름을 어떤 순서로 찾을지 설정할 수 있다.
이 때 .spec.dnsPolicy 를 사용한다.
.spec.dnsPolicy 는 다음 과 같은 타입을 가질 수 있다.
- Default : 파드가 실행중인 노드의 DNS 설정 사용한다.
- ClusterFirst : 외부 DNS 인 업스트립 DNS 에 도메인 이름을 질의한다. (ex. www.example.com)
- ClusterFirstWithHostNet : 파드를 호스트 모드로 실행할 때 반드시 사용해야하는 필드.
- None : 클러스터 안의 DNS 설정을 무시하고 .spec.dnsPolicy 하위 필드로 DNS 설정을 한다.
Kube-dns 의 질의 구조
컨테이너를 3개 사용한다.
- Kubedns : 쿠버네티스 DNS 변경을 감지하는 컨테이너
- Sidecar : dnsmasq 를 헬스체크 하는 컨테이너
- Dnsmasq : DNS 캐시 컨테이너
CoreDNS 의 질의 구조
모듈 형식이며 kube-dns 와는 다르게 컨테이너를 하나 사용한다.
Corefile 이라는 설정 파일을 이용하여 DNS 설정을 하며 자체의 설정 파일 형식을 가진다.
플러그 인으로 새로운 기능을 추가할 수 있는 유연한 구조다.
파드 안에 DSN 직접 설정하기
파드안에 DNS 를 사용자가 직접 설정할 수도 있다.
apiVersion: v1
kind: Pod
metadata:
namespace: default
name: dns-test
spec:
containers:
- name: dns-test
image: arisu1000/simple-container-app:latest
dnsPolicy: ClusterFirst
dnsConfig:
nameservers:
- 8.8.8.8
searches:
- default.svc.cluster.local
- example.com
options:
- name: name01
value: value01
- name: name02
.spec.dnsConfig 필드에 설정한 값은 파드의 /etc/resolv.conf 에 추가된다.
'[정리] 기능별 개념 정리 > Kubernetes' 카테고리의 다른 글
쿠버네티스 입문 - 12 - 오토스케일링 (HPA) (0) | 2020.04.08 |
---|---|
쿠버네티스 입문 - 11 - 로깅과 모니터링 (0) | 2020.04.08 |
쿠버네티스 입문 - 09 - 클러스터 네트워킹 (0) | 2020.04.08 |
쿠버네티스 입문 - 08 - 볼륨 (0) | 2020.04.08 |
쿠버네티스 입문 - 07 - 파드 스케줄링 (0) | 2020.04.05 |