반응형
영상: 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목록을 관리합니다.
반응형
'전공영역 공부 기록' 카테고리의 다른 글
Ubuntu symbolic 관리 명령어: update-alternatives (0) | 2023.01.01 |
---|---|
code-server pod ipynb파일이 안열릴 때 (2) | 2023.01.01 |
kubernetes에서 code-server 실행 (0) | 2023.01.01 |
helm hook 사용방법 (0) | 2022.12.25 |
자주사용하는 curl 명령어 정리 (0) | 2022.12.24 |