Service

Service는 쿠버네티스에서 Pod 집합에 대한 네트워크 접근 방식을 정의하는 리소스입니다. Pod는 동적으로 생성되고 삭제되므로 IP 주소가 계속 변경되는데, Service는 이러한 Pod 집합에 대한 안정적인 네트워크 엔드포인트를 제공합니다.

특징

서비스 유형

클라우드 네트워크 개념과 비교

실습 예시

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    app: nginx
spec:
  type: ClusterIP
  ports:
  - port: 80        # 서비스가 노출하는 포트
    targetPort: 80  # 대상 Pod의 포트
    protocol: TCP
  selector:
    app: nginx      # 이 레이블을 가진 Pod들이 서비스의 대상

NodePort 서비스 예시

apiVersion: v1
kind: Service
metadata:
  name: nginx-nodeport
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30080  # 노드에서 외부로 노출될 포트
  selector:
    app: nginx

LoadBalancer 서비스 예시

apiVersion: v1
kind: Service
metadata:
  name: nginx-lb
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: nginx

서비스 디스커버리

헤드리스 서비스

clusterIP: None으로 설정하여 단일 서비스 IP 없이 각 Pod의 DNS 레코드를 직접 제공하는 특수한 유형의 서비스입니다. StatefulSet과 함께 자주 사용됩니다.

apiVersion: v1
kind: Service
metadata:
  name: headless-service
spec:
  clusterIP: None
  selector:
    app: stateful-app
  ports:
  - port: 80
    targetPort: 80