[Retry, k8s] 18. 서비스 API - None-Selector
카테고리: KUBERNETES
태그: kubernetes
[Retry, k8s] 18. 서비스 API - None-Selector
🔔 None-Selector
쿠버네티스 내부 또는 외부의 원하는 목적지로 로드 밸런싱을 할 수 있는 서비스로, 셀렉터가 없기 때문에 서비스가 파드를 자동으로 찾아주지 않는다 그래서 none-selector 서비스를 사용하려면 엔드포인트 리소스를 직접 만들어서 서비스가 연결할 대상의 IP 주소와 포트를 지정해야 한다.
-
none-selector 서비스의 장점은 쿠버네티스 클러스터 외부나 다른 클러스터의 애플리케이션과 통신할 때도 쿠버네티스 서비스를 사용할 수 있다는 것이다.
-
예를 들어, 외부 도메인이나 IP 주소로 요청을 보내야 하는 경우에도 none-selector 서비스를 통해 로드 밸런싱을 할 수 있다.
-
또한, none-selector 서비스는 쿠버네티스 클러스터 내부에서 ClusterIP로 접근할 수 있기 때문에 애플리케이션에서 동일한 주소로 요청을 보낼 수 있다.
-
-
외부 도메인에 대한 별칭으로 사용되는 ExternalName 서비스와 비슷한 기능을 하지만, ExternalName 서비스는 CNAME이 반환되는 반면 None-Selector 서비스는 ClusterIP의 A 레코드가 반환된다.
- 그래서 ExternalName 서비스는 외부 도메인의 이름을 그대로 사용하는 반면 none-selector 서비스는 쿠버네티스 서비스의 이름을 사용한다.

📜 None-Selector 서비스 생성
-
아래 매니페스트로 생성한 서비스에는 다음과 같이 엔드포인트에 로드 밸런싱 대상 멤버가 등록되어 있고, 멤버를 등록/삭제할 경우, 엔드포인트 리소스만 수정하면 된다.
-
실제의 경우, ClusterIP 서비스나 Loadbalancer 서비스도 자동으로 엔드포인트 리소스가 생성되고 엔드포인트 리소스를 수정하여 로드 밸런싱 대상 파드를 변경한다.
cat <<EOF > sample-none-selector.yaml
apiVersion: v1
kind: Service
metadata:
name: sample-none-selector
spec:
type: ClusterIP
ports:
- protocol: TCP
port: 8080
targetPort: 80
---
apiVersion: v1
kind: Endpoints
metadata:
name: sample-none-selector
subsets:
- addresses:
- ip: 192.168.1.1
- ip: 192.168.1.2
ports:
- protocol: TCP
port: 80
EOF
댓글 남기기