Kubernetes DNS
K8s에서는 클러스터 안에서만 사용하는 DNS를 설정할 수 있다.
그리하여 파드 사이에 통신할 때 IP가 아닌 도메인을 사용할 수 있다.
특정 파드나 디플로이먼트를 도메인으로 접근하도록 설정했다면 문제가 생겨서 파드나 디플로이먼트를 재생성할 때 자동으로 변경된 파드의 IP를 도메인에 등록하고 자연스럽게 새로 실행한 파드로 연결할 수 있다.
DNS를 클라이언트나 API 게이트웨이가 호출할 서비스를 찾는 서비스 디스커버리 용도로 사용할 수도 있다.
클러스터 안에서 도메인 사용하기
특정 서비스에 접근하는 도메인
Domain: 서비스이름.네임스페이스이름.svc.cluster.local 으로 구성한다.
e.g.
namespace: aname
servcie: bservice
Domain: bservice.aname.svc.cluster.local
특정 파드에 접근하는 도메인
Domain: 파드IP주소.네임스페이스이름.pod.cluster.local
e.g.
namesapce: default
pod: cpod(10.10.10.10)
Domain: 10-10-10-10.default.pod.cluster.local
Example - DNS lookup in kubernetes pod
파드에서 curl과 nslookup명령어를 이용하여 생성된 domain을 확인해 본다.
## To create a namespace
kubectl create ns apps
## To create a Pod
kubectl run nginx --image=nginx --namespace apps
## To get the additional information of the Pod in the namespace "apps"
kubectl get po -n apps -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 99s 10.244.1.3 node01 <none> <none>
## To get the dns record of the nginx Pod from the default namespace
kubectl run -it test --image=busybox:1.28 --rm --restart=Never -- nslookup 10-244-1-3.apps.pod.cluster.local
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: 10-244-1-3.apps.pod.cluster.local
Address 1: 10.244.1.3
pod "test" deleted
## Accessing with curl command
kubectl run -it nginx-test --image=nginx --rm --restart=Never -- curl -Is http://10-244-1-3.apps.pod.cluster.local
HTTP/1.1 200 OK
Server: nginx/1.19.2
namespace: apps
pod: 10.244.1.3
domain: 10-244-1-3.apps.pod.cluster.local
'Cloud-native > Kubernetes' 카테고리의 다른 글
[Kubernetes]How to label Kubernetes pods (0) | 2022.05.06 |
---|---|
[Kubernetes]Manifest file - 매니페스트 파일(yaml) (0) | 2022.05.06 |
[Kubernetes]쿠버네티스 리소스 - 배치 잡 관리(Job/CronJob) (0) | 2022.05.06 |
[Kubernetes]쿠버네티스 리소스 - 어플리케이션 설정 정보 관리(ConfigMap/Secrets) (0) | 2022.05.06 |
[Kubernetes]쿠버네티스 리소스 - 네트워크 관리(Service/Ingress) (0) | 2022.05.06 |