[CKA] DNS

Hi yena·2023년 2월 28일
0

CKA

목록 보기
4/4

DOCS : https://kubernetes.io/ko/docs/concepts/services-networking/dns-pod-service/

linux 서버의 dns 정보는 대부분 /etc/resolv.conf 파일에 있다.
쿠버네티스도 마찬가지 이다. 파일 형식은 보통 아래와 같다

nameserver 10.32.0.10
search <namespace>.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

일반적으로 파드는 다음과 같은 DNS 주소를 갖는다.

pod-ip-address.my-namespace.pod.cluster-domain.example.
예를 들어, default 네임스페이스의 파드에 IP 주소 172.17.0.3이 있고, 클러스터의 도메인 이름이 cluster.local 이면, 파드는 다음과 같은 DNS 주소를 갖는다.
172-17-0-3.default.pod.cluster.local.

서비스는 아래 인용 문구 참고..! 전부 kubernetes doc에서 추출했다.

"노멀"(헤드리스가 아닌) 서비스는 서비스 IP 계열에 따라 my-svc.my-namespace.svc.cluster-domain.example 형식의 이름을 가진 DNS A 또는 AAAA 레코드가 할당된다. 이는 서비스의 클러스터 IP로 해석된다.
"헤드리스"(클러스터 IP가 없는) 서비스 또한 서비스 IP 계열에 따라 my-svc.my-namespace.svc.cluster-domain.example 형식의 이름을 가진 DNS A 또는 AAAA 레코드가 할당된다. 노멀 서비스와는 다르게 이는 서비스에 의해 선택된 파드들의 IP 집합으로 해석된다. 클라이언트는 해석된 IP 집합에서 IP를 직접 선택하거나 표준 라운드로빈을 통해 선택할 수 있다.

CKA 시험에선 파드와 서비스를 구성하고, dns 질의를 위한 임시 파드 생성,
파드에서 nslookup 조회 한 결과를 특정 파일에 저장하는 것이 시험문제로 나온다.

이런 경우에는 아래 예시와 비슷하게 진행해주면 된다.

  1. POD 생성 및 expose
$k run nginx-resolver --image=nginx
$k expose pod nginx-resolver --name=nginx-resolver-service --port=80 --target-port=80 
  1. 임시 POD 생성 및 nslookup 쿼리
$k run busybox --image=busybox:1.28 --rm -it --restart=Never -- /bin/sh
#
  1. 서비스 dns는 /etc/resolv.conf 파일을 통해 확인.
#nslookup nginx-resolver-service.default.svc.cluster.local
  1. POD dns는 "k get pods -o wide" 명령어를 통해서 얻은 POD IP 주소를 통해 nslookup 질의를 한다.
#nslookup 10-244-1-2.default.pod.cluster.local
  1. 위에서 얻은 내용은 파일에 입력하면 문제 해결!

0개의 댓글