[kubernetes] kubernetes 내부 DNS 주소를 통한 통신법

Joseph's Engineering Blog·2023년 4월 3일
0

TIPS

목록 보기
2/2
post-thumbnail

포스팅 이유

kubernetes 내부에서 특정 파드를 호출할 때 service IP를 통해 호출 할 수 있지만 service가 새로 생성되면 해당 IP가 변경된다. 이때 내부 DNS 주소를 사용하면 이런 걱정 없이 통신 할 수 있다.

coredns
kubernets 내부에서 DNS 서버와 같은 역할을 해준다.
자세한 내용은 kubernetes network 별도 포스팅에서 다루기로하자.

통신하는 방법

Pod내에서 다른 Pod를 호출할 때

<service_name>.<namespace>.svc.cluster.local

다음과 같은 형식으로 호출하면 된다.

하지만 이는 kubernetes 내부에서만 유효하다. (외부에서 호출해도 주소를 찾지 못함)

예시를 통해 알아보자.

예시

dw-project-dev라는 namespace에 /ping으로 요청하면 pong이라는 응답을 하는 파드가 떠 있다.

이 파드의 서비스명은 dw-rest-api이고 8080포트를 사용중이다.

다른 파드 내에서 curl을 통해 dw-rest-api 서비스를 호출해보자.

$ curl dw-rest-api.dw-project-dev.svc.cluster.local:8080/ping

정상적으로 pong이라고 응답이 오는것을 확인할 수 있다.

하지만 Pod 밖에서 호출을 하면 resolve가 되지 않는다. (coredns에서 resolve하기 때문)

profile
Kubernetes / DevOps / Git / Network / AWS / Terraform / Opensource / Java / Springboot

0개의 댓글