Oh My Algorithm
Concept Guide고정 주소 · 라벨 셀렉터

서비스 (Service)

파드는 죽고 다시 태어나며 그때마다 IP 가 바뀝니다. 서비스는 그 앞에 변하지 않는 주소를 하나 세우고, 뒤에 설 파드를 이름이 아니라 라벨 조건으로 고릅니다. 조건에 맞는 파드가 뜨면 저절로 목록에 들어오고 사라지면 빠지지만, 부르는 쪽이 쓰는 주소는 조금도 바뀌지 않습니다.

01서비스 (Service)

파드는 죽고 다시 태어납니다. 그때마다 IP 가 새로 붙으므로, 파드 주소를 직접 적어 두면 오래가지 못합니다.

서비스는 변하지 않는 주소를 하나 세웁니다. 클러스터 안에서는 이 이름으로 부르면 됩니다.

뒤에 누가 설지는 이름으로 지정하지 않습니다. 라벨이 조건에 맞는 파드가 자동으로 뽑힙니다.

app=web 을 단 두 파드가 걸립니다. 그 주소가 엔드포인트 목록에 올라갑니다.

api-1 은 같은 클러스터에 있어도 라벨이 다릅니다. 조건에 걸리지 않으니 목록에 없습니다.

web-2 가 죽습니다. 목록에서 그 주소가 빠지지만, 앞의 주소는 조금도 바뀌지 않습니다.

대신 뜬 파드는 IP 가 다릅니다. 그래도 라벨이 같으니 아무 설정 없이 목록에 들어옵니다.

새 파드가 준비를 마치자 목록이 다시 둘이 됩니다. 부르는 쪽은 무슨 일이 있었는지 모릅니다.

요청이 오면 목록 중 하나로 넘어갑니다. 어느 파드가 받을지는 그때그때 정해집니다.

web-110.0.0.2web-210.0.0.3api-1app=api
1 / 9

정리

서비스가 하는 일은 주소를 고정하는 것이고, 그 뒤에 누가 서 있을지는 라벨이 정합니다. 파드를 늘리고 줄이고 갈아치워도 부르는 쪽 코드는 그대로입니다.

02 쉽게 이해하기

For Everyone
🔑핵심 동작

파드 IP 는 다시 뜰 때마다 바뀌지만 서비스 주소는 고정입니다. 뒤에 설 파드는 이름이 아니라 라벨 조건으로 뽑혀 엔드포인트 목록이 저절로 갱신됩니다.

💡쉽게 말하면

서비스에는 클러스터 안에서만 통하는 주소(ClusterIP)와 DNS 이름이 붙습니다.

어떤 파드가 뒤에 설지는 셀렉터가 정하고, 조건에 맞으면서 준비를 마친 파드의 주소가 엔드포인트 목록으로 관리됩니다.

요청은 그 목록 중 하나로 넘어가는데, 이 분배는 프록시 계층(kube-proxy 등)이 노드에서 처리합니다.

준비되지 않은 파드는 목록에 들어가지 않으므로, readiness 를 제대로 잡아야 아직 못 받는 파드로 트래픽이 가지 않습니다.

📍어디에 쓰나
  • 파드 IP 대신 서비스 이름으로 호출하도록 설계
  • 라벨 체계 정하기
  • 배포 중 트래픽이 끊기지 않게 readiness 맞추기
  • 무상태 서비스의 스케일아웃

03 자주 묻는 질문

FAQ
서비스 (Service)란 무엇인가요?+

파드는 죽고 다시 태어나며 그때마다 IP 가 바뀝니다. 서비스는 그 앞에 변하지 않는 주소를 하나 세우고, 뒤에 설 파드를 이름이 아니라 라벨 조건으로 고릅니다. 조건에 맞는 파드가 뜨면 저절로 목록에 들어오고 사라지면 빠지지만, 부르는 쪽이 쓰는 주소는 조금도 바뀌지 않습니다.

서비스 (Service)은(는) 어디에 사용하나요?+

파드 IP 대신 서비스 이름으로 호출하도록 설계, 라벨 체계 정하기, 배포 중 트래픽이 끊기지 않게 readiness 맞추기, 무상태 서비스의 스케일아웃

서비스 (Service)를 쉽게 비유하면?+

파드 IP 는 다시 뜰 때마다 바뀌지만 서비스 주소는 고정입니다. 뒤에 설 파드는 이름이 아니라 라벨 조건으로 뽑혀 엔드포인트 목록이 저절로 갱신됩니다.