클라이언트가 Pod UP 목록을 최신 상태로 관리해야 한다.
- Pod 는 생성될 때 마다 새로운 IP를 할당받음
Pod을 외부로 노출 시킬 수 없다.
- Pod IP는 클러스터 내부에서만 접근할 수 있다.
apiVersion: v1
kind: Service
metatdata:
name: order # 서비스의 이름
namespace: {namespace}
labels:
app: order
spec:
selector:
app: order # 유입될 트래픽을 전달한 파드들의 집합
ports:
- port: 80 # 노출할 서비스 포트
targetPort: 8080 # 서비스 포트와 연결할 컨테이너 포트,
`containerPort와 일치해야함`
1. Pod 생성시 컨테이너 환경변수에 모든 ServiceIP와 Port를 추가한다.
ex) OOO_SERVICE_HOST, OOO_SERVICE_PORT
주의 1) Service를 Pod보다 먼저 생성되어있어야 한다.
2) 다른 네임스페이스에 있는 Servcie 환경변수는 설정되지 않는다.
1. 쿠버네티스가 DNS서버 IP주소를 컨테이너의 `/etc/resolve.conf`파일에 등록
2. Service 이름으로 요청을 실행하면 DNS 서버로부터 Service IP를 조회
LoadBalancer > NodePort > ClusterIP
클라우드 서비스
의 Load Balancer를 프로비저닝하고 External IP를 할당 받는다.Pod 안에서는 Service 이름과 네임스페이스 이름을 이용해서 다른 Pod과 통신할 수 있다.
- Pod:<service-name>:<service-port>
- Pod:<service-name>:<service-port>.<namespace>