Kubernetes

서비스 API 카테고리(ExternalIP, NodePort)

jih0ssang 2024. 2. 7. 20:00

서비스 API 카테고리

컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스

- 서비스

   - ClusterIP

   - ExternalIP  (ClusterIP의 한 종류)

   - NodePort

   - LoadBalancer

   - Headless (None)

   - ExternalName

   - None-Selector

- 인그레스

 

 

ExternalIP 

ClusterIP

클러스터 내부 로드밸런서리스너 포트             대상 서버포트 지정 으로 부하분산

 

ExternalIP

클러스터 외부(노드)IP 및 리스너 포트 그리고  클러스터 내부 로드밸런서리스너 포트와         대상 서버포트 지정

근데 보통 노드에 안붙이고 클라우드의 로드밸런서 IP로 붙으려 한다.

 

NodePort 

ExternalIP는 지정한 쿠버네티스 노드의 IP 및 리스너 포트에서 수신한 트래픽을 컨테이너로 전송하는 형태이지만

NodePort는 모든 쿠버네티스 노드의 IP 및 리스너 포트에서 수신한 트래픽을 컨테이너에 전송하는 형태로 외부와 통신하는 방식이다.

 

 

apiVersion: v1
kind: Service
metadata:
  name: sample-nodeport
spec:
  type: NodePort
  selector: 
    mylabel: sample-label
  ports:
  - name: "http-port"
    port: 80 		# 파드(ClusterIP)의 리스너 포트
    targetPort: 80  # 컨테이너의 리스너 포트
    NodePort: 80 	# 노드의 리스너 포트
  • NodePort에서 사용할 수 있는 포트 범위 30000~32767
  • 여러 NodePort 서비스에서 같은 포트 사용 불가

범위 외의 포트를 지정하려고 하면 에러가 발생한다.

(쿠버네티스 마스터 설정을 자체적으로 바꿀 수 있는 경우에는 이 범위를 커스터마이즈 할 수 있다.)