쿠버네티스의 Services는 뒷단에 있는 Pod의 label 정보를 바탕으로한 selector로 그 대상이 되는 Pod를 매칭한다. 만약 해당 Label을 단 새로운 Pod이 생겼다면, Service는 자동으로 그 Pod과 연결되어 트래픽을 보낸다.
이러한 일이 가능한 것은 service가 트래픽을 보낼 오브젝트를 추적해주는 **EndPoint
**가 있기 때문이다. 매칭된 Pod의 IP 주소는 그 service의 endpoint가 되어 연결된다.
service는 endpoints를 통해 트래픽을 보내는 주소의 목록을 관리한다. endpoints는 labels와 selectors를 통해 자동으로 업데이트 될 수 있다. 그리고 경우에 따라 수동으로 endpoints를 설정할 수 있다.
service selector가 Pod의 label에 매칭되면 endpoints가 자동으로 만들어진다.
myapp
이라는 이름의 Deployment와 Service를 생성하는 minifest file을 실행하고 endpoint를 확인해보면
두개의 endpoints를 가지고 있으며 모두 80 포트라는것을 확인 할 수 있다. 이 endpoint들은 매니페스트로 배포한 pod들의 ip 주소여야 한다. 이것을 확인하기위해 get pods 커맨드를 -o wide
옵션과 함께 확인해보자.
Pod의 IP 주소들이 엔드포인트의 주소들과 매칭된다는 것을 확인할 수 있다. 보이지 않는 곳에서 endpoints가 매칭된다는 사실을 확인했다.