서비스
파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법.
파드는 고유한 IP 주소를 갖지만, 디플로이먼트등 외부에서 파드를 종료 후 새로 생성할 수 있다. 이러한 경우 때문에 파드의 IP 주소를 고정적으로 특정할 수 없음.
쿠버네티스에서 서비스는 파드의 논리적 집합과 그것들에 접근할 수 있는 정책을 정의하는 추상적 개념이다. 서비스가 대상으로 하는 파드의 집합은 일반적으로 셀렉터가 결정한다.
서비스 정의
예를 들어, 각각 TCP 포트 9376에서 수신하는 app=Myapp 레이블을 갖는 파드세트의 서비스는 다음과 같이 정의할 수 있다.
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
서비스 퍼블리싱
애플리케이션 중 일부는 서비스를 클러스터 밖에 위치한 외부 IP 주소에 노출하고 싶은 경우가 있을 것이다.
쿠버네티스 ServiceTypes는 원하는 서비스 종류를 지정할 수 있도록 해준다. 기본값은 ClusterIP.
- ClusterIP
- 서비스를 클러스터 내부 IP에 노출시킨다.
- 이 값은 클러스터 내부에서만 서비스에 도달할 수 있다.
- NodePort
- 고정 포트로 각 노드의 IP에 서비스를 노출시킨다.
- <NodeIP>:<NodePort> 를 요청하여, 클러스터 외부에서 NodePort 서비스에 접속할 수 있다.
- LoadBalancer
- 클라우드 공급자의 로드밸런서를 사용하여 서비스이 외부에 노출시킨다.
- 외부 로드 밸런서가 라우팅되는 NodePort와 ClusterIP가 자동으로 생성된다.
- ExternalName
- DNS 이름에 대한 서비스에 매핑한다.
인그레스를 사용하여 서비스를 노출할 수도 있다.
인그레스
인그레스는 외부에서 서비스로 접속이 가능한 URL, 로드 밸런스 트래픽, SSL / TLS 종료 그리고 이름-기반의 가상 호스팅을 제공하도록 구성할 수 있다.
Loading Comments...