Cluster IP, Headless IP 특징

도람·2025년 11월 14일
post-thumbnail

클러스터 IP란(ClusterIP)

클러스터 IP란 쿠버네티스에서 Service 타입 중 기본값인 ClustIP가 가지는 내부 전용 IP를 말한다.
이게 기본 정의인데, 쉽게 풀어쓰자면

"클러스터 안에서만 접근 가능한 내부 IP주소"이다.

kubectl get svc

예를 들어 이렇게 service를 호출했을 때 ,

NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)
nginx-svc    ClusterIP   10.96.0.12      <none>        80/TCP

이런식으로 나온다.

여기서 10.96.0.12가 바로 클러스터 IP이다.

이 주소는 Pod -> Service통신에는 사용되지만,
외부에서는 직접 접근할 수 없으며 외부 접근이 필요할 때에는, 전 게시물인 로드밸런서나 노드포트로 노출시켜줘야 한다.


헤드리스 서비스(Headless Service)

헤드리스는 말그대로 머리가 없는 서비스이다.
즉, 고정 IP(ClusterIP)를 부여하지 않는 서비스이다.

apiVersion: v1
kind: Service
metadata:
  name: my-headless
spec:
  clusterIP: None       # 이게 핵심
  selector:
    app: my-app
  ports:
  - port: 80

ClusterIP : None
이 설정이 있으면 쿠버네티스가 IP를 생성하지 않는다.

헤드리스 서비스를 왜 쓸까?

보통 Pod 각각에 직접 접근하고 싶을 때 사용한다.

예를 들어 StatefulSet(예: DB, Kafka, Redis 클러스터)처럼
각 Pod가 고유한 역할을 가지는 경우,
하나의 IP로 묶기보다 각 Pod를 DNS 이름으로 따로 접근해야 한다.

my-db-0.my-headless.default.svc.cluster.local
my-db-1.my-headless.default.svc.cluster.local
my-db-2.my-headless.default.svc.cluster.local

이렇게 각각의 Pod에 직접 접근 가능하게 된다.

정리

구분설명접근 가능 위치
ClusterIP클러스터 내부에서 접근 가능한 고정 IP클러스터 내부만
Headless ServiceIP 없이 Pod 개별 DNS 이름으로 접근Pod 개별 통신 시 유용

참고자료
[쿠버네티스 공식 홈페이지 - DNS for Services and Pods]
https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/?utm_source=chatgpt.com
[쿠버네티스 공식 홈페이지 - Service]
https://kubernetes.io/docs/concepts/services-networking/service/?utm_source=chatgpt.com

profile
정도를 걷는 엔지니어

0개의 댓글