kubernetes - 서비스 엔드포인트

2021. 11. 1. 14:57kubernetes | docker

5.2.1 쿠버네티스 서비스 엔드포인트

 

서비스는 파드와의 통신을 위해 중간 엔드포인트라는 리소스를 만들어두고 파드와 통신한다.

 

 

엔드포인트는 서비스로 노출되는 파드들의 IP주소와 포트 목록이라고 생각하면 쉽다. 엔드 포인트 리소스는 

 

kubectl get endpoints <svc name>을 입력하면 조회가능하고...

또는

kubectl describe svc <svc name>을 입력하여 조회 가능하다.

 

 

 

엔드포인트는 수동으로 파드 IP를 입력하여 등록이 가능하다.

 

apiVersion: v1
kind: Endpoints
metadata:
  name: external-service
subsets:
  - addresses:
    - ip: 11.11.11.11 (pod IP)
    - ip: 22.22.22.22 (pod IP)
    ports:
    - port: 80

 

여기서 엔드포인트의 이름은 서비스의 이름과 같아야한다.

 

여기서 궁금증은 Pod가 중간에 삭제 혹은 없어질 경우 IP가 바뀌게 된다.

 

그리고 서비스는 레이블 셀렉터를 이용하여 pod를 등록하는데 IP를 등록하여 무슨소용인가...?

 

쿠버네티스는 엔드포인트를 레이블 셀렉터를 이용하여 꾸준하게 업데이트를 진행한다.

 

만약 외부의 서비스에 내부 클러스터의 pod를 노출시키고 싶은 경우 다음과 같이 노축시킨다.

 

 

만약, 나중에 외부서버들을 쿠버네티스 안으로 pod로 관리하고 싶은 경우가 생기는 경우,,,,,(마이그레이션)

 

서비스 yaml안에 셀러터(레이블 셀렉터)에 레이블을 추가하여 생성시킨다.

 

만약... 셀렉터를 제거하면 쿠버네티스는 엔드포인트 업데이트를 멈추게 되며...

 

셀렉터를 제거하지 않으면 ip 주소를 일정하게 유지하여 외부서버를 운영할 수 있다.