본문 바로가기
Development, Architecture/Docker, k8s

[쿠버네티스] 서비스 유형별 정리

by ggyongi 2024. 7. 22.
반응형

1. ClusterIP

용도: 파드 간 통신

서비스가 생성되면 k8s 내부 DNS 서버에 서버 IP 주소가 등록됨

 

사실 서비스가 없어도 파드의 IP를 직접 알아내어 파드 간 통신을 할 수 있음. 하지만 이러면 재생성된 파드에 대해 대응을 못함(IP가 바뀌어서)

 

name: api-service

port 80

targetPort 80

selector: numbers_api

 

2. LoadBalancer

용도: 외부 트래픽 전달

 

spec:

  ports:

    - port: 8080         # 서비스가 주시하는 포트 

    - targetPort: 80   # 트래픽이 전달될 파드의 포트

  selector:

    app: numbers-web 

 

3. NodePort

용도: 외부 트래픽을 전달하는 또다른 방법(실제론 잘 안씀)

노드포트 서비스는 모든 노드가 서비스에 설정된 포트를 주시하게 함

 

spec:

  ports:

    - port: 8080              # 다른 파드가 서비스에 접근하기 위해 사용하는 포트 

    - targetPort: 80        # 대상 파드에 트래픽을 전달하는 포트

    - nodePort: 30080   # 서비스가 외부에 공개되는 포트

  selector:

    app: numbers-web 

4. External Node

용도: 외부로 요청 전달

파드가 numbers_api를 조회하면 DNS 서비스가 'raw.github.com'을 반환

 

metadata:

  name: numbers_api

spec:

  externalName: 'raw.github.com'

 

5. CluterIP: None을 설정한 헤드리스 서비스

apiVersion: v1
kind: Service
metadata:
  name: headless-service
spec:
  clusterIP: None
  selector:
    app: myapp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376

   

특징

  • DNS 이름 해석: 서비스 이름으로 DNS 쿼리를 수행하면, 서비스에 속한 모든 파드의 IP 주소 목록이 반환
  • 직접 통신: 클라이언트는 서비스의 DNS 이름을 사용하여 파드의 IP 주소 목록을 받아와 직접 통신할 수 있다
  • 자동 업데이트: 파드가 추가되거나 삭제되면, DNS 이름 해석 결과가 자동으로 업데이트

주요 용도

  • 파드 간의 직접 통신이 필요할 때
  • 상태를 유지해야 하는 스테이트풀 애플리케이션(예: 데이터베이스 클러스터)
  • 클라이언트가 직접 파드의 IP 주소 목록을 사용하여 로드 밸런싱을 수행할 때

 

5. 엔드포인트를 제공하는 서비스

레이블 셀렉터가 없어 대상 파드가 없다.

대신 자신이 제공해야 할 IP 주소 목록이 담긴 엔드포인트 리소스와 함께 배포됨

apiVersion: v1
kind: Service
metadata:
  name: my-external-service
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
---
apiVersion: v1
kind: Endpoints
metadata:
  name: my-external-service
subsets:
  - addresses:
      - ip: 192.168.1.1
      - ip: 192.168.1.2
    ports:
      - port: 80

 

특징

  • 고정된 IP 주소 목록: 엔드포인트는 특정 IP 주소와 포트를 직접 지정하여 설정
  • 수동 관리: 엔드포인트는 수동으로 정의되며, 파드의 변화에 따라 자동으로 업데이트되지 않음
  • 외부 리소스 연결: 클러스터 외부의 서비스나 특정 IP 주소에 대한 접근을 설정할 때 유용

주요 용도

  • 클러스터 외부의 리소스(예: 외부 데이터베이스 서버)와 연결할 때
  • 특정 고정된 IP 주소를 사용하여 접근해야 할 때 

 

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글