k8s

CKA 준비 (29) Kube-DNS

Joon0464 2022. 8. 30. 13:43

다음 강의 영상을 참고하였습니다.

https://www.youtube.com/watch?v=foZaiibzFZ4&list=PLApuRlvrZKojqx9-wIvWP3MPtgy2B372f&index=34 

 

 

이론) 

Core DNS

- worker node 에서 어플리케이션 디플로이먼트에 의해 파드 2개가 동작중일 때 각각의 Pod는 IP 주로를 가지고 있다.

- Service를 생성하여 ClusterIP에 각각 파드의 IP 주소(endpoint)를 묶어줄 수 있다.

- Service ClusterIP는 개별적으로 IP주소가 할당된다.

- Core DNS 는 생성한 Service의 이름과 ClusterIP의 IP 주소 맵핑 정보를 가지고 있게된다.

- Core DNS 기본적으로 이중화 되어있다.

- Service 이름과 IP주소 정보를 가지고 있게 된다.

- Deployment에 의해 생성된 pod에 할당된 IP주소 정보도 Core DNS 에 저장되어 있다.

 

문제) 

* Create a nginx pod called nginx-resolver using image nginx, expose it internally with a service called nginx-resolver-service.

* Test that you are able to look up the service and pod names from within the cluster. Use the image busybox:1.28 for dns lookup

- Record result in /tmp/nginx.svc and /tmp/nginx.pod

- pod: nginx-resolver created

- Service DNS Resolution recorded correctly

- Pod DNS resolution recorede correctly

 

풀이)

1. pod 생성 및 expose

$ kubectl run nginx-resolver --image=nginx
$ kubectl expose pod nginx-resolver --name nginx-resolver-service --port=80 --target-port=80

생성된 결과 확인

2. nslookup 질의

검색 키워드 : dns -> https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/

 

2.1 dns 질의를 위한 busybox 이미지 파드를 임시로 생성한다.

$ kubectl run busybox --image=busybox:1.28 --rm -it --restart=Never -- /bin/sh

2.2 service에 대해서 nslookup 조회

다음 doc의 예시를 참고하여 질의한다.
cat /etc/resolv.conf 를 통해 default domain을 알 수 있다.

# nslookup my-resolver-service.default.svc.cluster.local.

다음과 서비스의 dns 질의가 같이 조회된다.

2.3 pod에 대해서 nslookup 조회

kubectl 명령어를 통해 pod의 ip주소를 조회한다.

# nslookup 10-244-1-2.default.pod.cluster.local

다음과 파드의 dns 질의가 같이 조회된다.

3. 파일에 내용 입력

$ cat > /tmp/nginx.svc
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      nginx-resolver-service.default.svc.cluster.local.
Address 1: 10.97.185.41 nginx-resolver-service.default.svc.cluster.local


$ cat /tmp/nginx.pod
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      10-244-1-2.default.pod.cluster.local
Address 1: 10.244.1.2 10-244-1-2.nginx-resolver-service.default.svc.cluster.local