kubernetes - Headless Service

우야·2021년 5월 26일
0

헤드리스(Headless) 서비스

사용 이유

  • 로드-밸런싱과 단일 서비스 IP가 필요 없는 경우가 있다.

생성 방법

  • 명시적으로 클러스터 IP (.spec.clusterIP)에 None을 지정한다.

동작

  • 플랫폼에서 로드 밸런싱, 프록시 하지 않음

    • 헤드리스 서비스의 경우, 클러스터 IP가 할당되지 않고,
    • kube-proxy가 이러한 서비스를 처리하지 않는다.
  • 그러면 어떻게 Target(pod ...) 접속할수 있나?

    • DNS가 자동으로 구성된다.
  • DNS가 자동으로 구성되는 방법은 Headless Service에 Selector가 정의되어 있는지 여부에 달려있다.

    • Selector를 정의하는 경우
      • Endpoint Controller는 API Server에서 Endpoint 레코드를 생성하고,
      • DNS 구성을 수정하여,
      • Service와 연관된 pod를 직접 가리키는 IP 주소를 반환한다.
    • Selector를 정의하지 않는 경우
      • Endpoint Controller는 Endpoint 레코드를 생성하지 않는다.
      • 그러나 DNS시스템은 다음 중 하나를 찾고 구성한다.
        - ExternalName 유형 서비스에 대한 CNAME 레코드.
        - Service의 이름을 공유하는 Endpoint에 대한 레코드.

응용

  • 쿠버네티스의 구현에 묶이지 않고, 헤드리스 서비스를 사용하여 다른 서비스 디스커버리(Istio) 메커니즘과 인터페이스할 수 있다.

https://speakerdeck.com/devinjeon/kubernetes-neteuweokeu-ihaehagi-2-seobiseu-gaenyeomgwa-dongjag-weonri

profile
Fullstack developer

0개의 댓글

관련 채용 정보