서비스 API 카테고리
컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스
- 서비스
- ClusterIP
- ExternalIP (ClusterIP의 한 종류)
- NodePort
- LoadBalancer
- 그 외 서비스 기능
- Headless (None)
- ExternalName
- None-Selector
- 인그레스
None-Selector
ExternalName 서비스는 서비스명으로 이름 해석을 하면 CNAME으로 반환 하였다.
그에 반해, None-Selector 서비스는 서비스명으로 이름 해석을 하면 A 레코드로 반환한다.자신이 설정한 멤버에 대해 로드 밸런싱을 하며, Client-side 로드밸런싱용 엔드포인트를 제공하는 서비스라고 말할 수 있다.type: LoadBalancer를 지정하는 것도 가능하지만, 쿠버네티스 클러스터의 외부 로드 밸런서에서 수신한 트래픽이 쿠버네티스 클러스터로 전송된 후에 다시 쿠버네티스 클러스터의 외부로 전송하는 형태가 되므로 유용하지 못하다.이는 type: NodePort도 마찬가지다.
externalName을 지정하지 않고 Selector가 존재하지 않는 서비스를 생성한 후 엔드포인트 리소스를 수동으로 만들면 유연한 서비스를 만들 수 있다. 예를 들어 쿠버네티스 클러스터 외부의 애플리케이션 서버에 대해 요청을 분산하는 경우에도 상단의 그림과 같이 사용할 수 있다.
None-Selector 서비스 생성
---
apiVersion: v1
kind: Service
metadata:
name: sample-none-selector
spec:
type: ClusterIP
ports:
- port: 8080
protocol: TCP
targetPort: 80
---
apiVersion: v1
kind: Endpoints
metadata:
name: sample-none-selector
subnets:
- addresses:
- ip: 192.168.1.1
- ip: 192.168.1.2
ports:
- protocol: TCP
port: 80
실제 리소스를 생성할 때는 서비스와 엔드포인트 리소스를 각각 생성한다.
서비스와 엔드포인트 리소스는 각각 이름이 일치해야 하므로 주의해야 한다.
기본적으로 서비스 리소스는 기본값 type: ClusterIP를 지정한다.서비스에는 셀렉터를 지정하지 않는다는 점을 주의한다.마찬가지로 externalName도 지정하지 않는다.
'Kubernetes' 카테고리의 다른 글
서비스 API 카테고리 정리 (0) | 2024.02.18 |
---|---|
Ingress(인그레스) (0) | 2024.02.17 |
스케줄링(taint&tolerations/NodeSelector/NodeAffinity) (0) | 2024.02.13 |
Resource Requests/Limits (0) | 2024.02.13 |
서비스 API 카테고리(ExternalName) (0) | 2024.02.11 |