서비스 (Service)
파드는 죽고 다시 태어나며 그때마다 IP 가 바뀝니다. 서비스는 그 앞에 변하지 않는 주소를 하나 세우고, 뒤에 설 파드를 이름이 아니라 라벨 조건으로 고릅니다. 조건에 맞는 파드가 뜨면 저절로 목록에 들어오고 사라지면 빠지지만, 부르는 쪽이 쓰는 주소는 조금도 바뀌지 않습니다.
01서비스 (Service)
개념 한눈에 보기파드는 죽고 다시 태어납니다. 그때마다 IP 가 새로 붙으므로, 파드 주소를 직접 적어 두면 오래가지 못합니다.
서비스는 변하지 않는 주소를 하나 세웁니다. 클러스터 안에서는 이 이름으로 부르면 됩니다.
뒤에 누가 설지는 이름으로 지정하지 않습니다. 라벨이 조건에 맞는 파드가 자동으로 뽑힙니다.
app=web 을 단 두 파드가 걸립니다. 그 주소가 엔드포인트 목록에 올라갑니다.
api-1 은 같은 클러스터에 있어도 라벨이 다릅니다. 조건에 걸리지 않으니 목록에 없습니다.
web-2 가 죽습니다. 목록에서 그 주소가 빠지지만, 앞의 주소는 조금도 바뀌지 않습니다.
대신 뜬 파드는 IP 가 다릅니다. 그래도 라벨이 같으니 아무 설정 없이 목록에 들어옵니다.
새 파드가 준비를 마치자 목록이 다시 둘이 됩니다. 부르는 쪽은 무슨 일이 있었는지 모릅니다.
요청이 오면 목록 중 하나로 넘어갑니다. 어느 파드가 받을지는 그때그때 정해집니다.
02 쉽게 이해하기
For Everyone파드 IP 는 다시 뜰 때마다 바뀌지만 서비스 주소는 고정입니다. 뒤에 설 파드는 이름이 아니라 라벨 조건으로 뽑혀 엔드포인트 목록이 저절로 갱신됩니다.
서비스에는 클러스터 안에서만 통하는 주소(ClusterIP)와 DNS 이름이 붙습니다.
어떤 파드가 뒤에 설지는 셀렉터가 정하고, 조건에 맞으면서 준비를 마친 파드의 주소가 엔드포인트 목록으로 관리됩니다.
요청은 그 목록 중 하나로 넘어가는데, 이 분배는 프록시 계층(kube-proxy 등)이 노드에서 처리합니다.
준비되지 않은 파드는 목록에 들어가지 않으므로, readiness 를 제대로 잡아야 아직 못 받는 파드로 트래픽이 가지 않습니다.
- –파드 IP 대신 서비스 이름으로 호출하도록 설계
- –라벨 체계 정하기
- –배포 중 트래픽이 끊기지 않게 readiness 맞추기
- –무상태 서비스의 스케일아웃
03 자주 묻는 질문
FAQ서비스 (Service)란 무엇인가요?+
파드는 죽고 다시 태어나며 그때마다 IP 가 바뀝니다. 서비스는 그 앞에 변하지 않는 주소를 하나 세우고, 뒤에 설 파드를 이름이 아니라 라벨 조건으로 고릅니다. 조건에 맞는 파드가 뜨면 저절로 목록에 들어오고 사라지면 빠지지만, 부르는 쪽이 쓰는 주소는 조금도 바뀌지 않습니다.
서비스 (Service)은(는) 어디에 사용하나요?+
파드 IP 대신 서비스 이름으로 호출하도록 설계, 라벨 체계 정하기, 배포 중 트래픽이 끊기지 않게 readiness 맞추기, 무상태 서비스의 스케일아웃
서비스 (Service)를 쉽게 비유하면?+
파드 IP 는 다시 뜰 때마다 바뀌지만 서비스 주소는 고정입니다. 뒤에 설 파드는 이름이 아니라 라벨 조건으로 뽑혀 엔드포인트 목록이 저절로 갱신됩니다.
