본문 바로가기

Kubernetes(k8s)/서비스

서비스

1.        서비스

 

         1.1.        정의

pod 집합에서 실행 중인 애플리케이션을 네트워크 서비스로 노출하는 추상화

방법이다.

 

 

         1.2.        종류

 

     Cluster IP

Cluster IP는 클러스터 안에 있는 다른 Pod들이 접근할 수 있도록 IP를 할당한다. 내부

IP만을 할당하기 때문에 클러스터 외부에서는 접근이 불가능하다.

 

apiVersion: v1
kind: Service
metadata: 
  name: my-internal-service
spec:
  selector:   
    app: my-app
  type: ClusterIP
  ports: 
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP

 

     NodePort

NodePort는 고정 포트로 Pod이 배포된 노드들의 IP에 서비스를 노출시킨다. NodePort

서비스는 ClusterIP 서비스를 자동으로 생성한다. NodeIP:NodePort를 요청하여 클러스터

외부에서 NodePort 서비스에 접근할 수 있다.

 

apiVersion: v1
kind: Service
metadata: 
  name: my-nodeport-service
spec:
  selector:   
    app: my-app
  type: NodePort
  ports: 
  - name: http
    port: 80
    targetPort: 80
    nodePort: 30036
    protocol: TCP

 

     LoadBalancer

로드 밸런서는 서비스를 외부에 노출시키는 표준 방법이다. 로드밸런서는 따로 물리

장비(컴퓨터)가 필요하며, 클라우드 컴퓨팅 환경에서는 벤더사가 제공하는 로드밸런서를

사용하면 된다.

 

     Ingress

쿠버네티스의 서비스 종류 중 하나가 아닌, 서비스들을 묶는 하나의 스마트 라우터 역할을 수행한다. 즉 하나의 LoadBalancer에서 여러 서비스를 노출할 수 없는 한계를 해결하는 것이 Ingress이다.