전공영역 공부 기록

쿠버네티스 Headless 서비스

악분 2023. 1. 1. 20:52
반응형

영상: https://youtu.be/If03sN4isO4

 

Headless서비스란?

Headless서비스는 ClusterIP가 없는 서비스입니다. kubectl로 서비스를 조회하면 ClusterIP가 None으로 표시됩니다.

 

Headless서비스와 일반 서비스 비교

Headless서비스는 kube-proxy가 처리하지 않아서 “서비스”를 이용한 로드 밸런싱 기능은 지원하지 않습니다.

 

일반 서비스는 kube-proxy가 처리하므로 서비스가 트래픽을 로드밸런싱 합니다. 하지만 headless서비스는 서비스를 거치지 않고 pod에 직접 접근합니다. 

 

DNS 쿼리 테스트

테스트를 하기 위해 제 git repo에 있는 쿠버네티스를 배포합니다. kustomize를 이용하여 쉽게 배포할 수 있습니다. 배포가 성공하면 일반 서비스와 headless서비스, netshoot pod가 배포됩니다. netshoot pod는 클라이언트 역할을 수행합니다.

git repo: https://github.com/sungwook-practice/k8s-headless

 

nslookup으로 테스트해보면 서비스와 headless서비스 차이를 확인할 수 있습니다. 일반 서비스는 서비스의 clusterIP가 조회되지만 headless서비스는 pod IP목록이 조회됩니다.

# 일반 서비스 DNS쿼리
nslookup echo-normal.default.svc

# headless 서비스 DNS쿼리
nslookup echo-headless.default.svc

 

headless는 언제 사용될까?

headless서비스는 pod를 그룹으로 관리하고 POD IP목록을 직접 조회가 필요한 아키텍처에서 사용합니다. master/slave, 클러스터 등 아키텍처를 가지고 있는 데이터베이스에서 많이 사용합니다.

예로 Elsaticsearch helm chart에서 headless서비스를 사용하여 master목록을 관리합니다.

 

반응형