파드간 통신

han·2025년 2월 16일

깊이 들어가면 내부 복잡한 동작방식들이 있겠지만, 사실 그렇게까지는 잘 모르기때문에ㅠㅠ,,
사용자 단에서 알만한 내용들로 적어본다.

기본 DNS 이름 형식

  • 같은 Namespace일 경우:
    • 서비스 이름으로 접근
    • ex) my-test-service
  • 다른 Namespace일 경우:
    • FQDN(Fully Qualified Domain Name)으로 접근
    • {서비스명}.{Namespace 명}.svc.cluster.local
    • ex) my-test-service.test-namespace.svc.cluster.local

파드간 통신 설정

파드 내 /etc/resolv.cof 파일을 보고 목적지를 찾아간다.

ex)
nameserver 10.96.0.10
search test-namespace.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

nameserver 10.96.0.10 => 쿠버네티스 내부 DNS 서비스 IP(coreDNS IP)
search test-namespace.svc.cluster.local svc.cluster.local cluster.local => DNS 검색 순서, 같은 namespace라면 my-test-service만 쓰더라도 찾아갈 수 있도록 설정
options ndots:5 => 도메인에 점이 5개 미만이면 search 도메인에서 먼저 검색

ndots

예를들어 www.google.com이라면 점이 2개가 된다.
my-test-service를 찾는다고 하면 해당 쿼리에 .이 0개이다.
이때 search의 도메인을 먼저 찾아가겠다는 의미이다.
이 경우 my-test-service.test-namespace.svc.cluster.local, my-test-service.svc.cluster.local, my-test-service.cluster.local 순으로 대상을 먼저 찾아가게 된다.

파드의 /etc/resolv.conf제어

podspec의 dns 설정

  1. dnsPolicy
    • 디폴트 설정
      • dnsPolicy: ClusterFirst
      • 내부 DNS(coredns)를 사용
    • 노드의 dns 설정
      • dnsPolicy: Default
      • 파드의 resolv.cof 파일을 노드의 resolv.conf파일과 동일하게 맞춤
      • 외부 DNS 서버를 사용하고 싶을 때 적용
  2. dnsConfig
    • 커스텀 설정
    • dnsPolicy: none
    • dnsConfig: blahblah~~

0개의 댓글