파드는 자체 IP를 가지고 다른 파드와 통신할 수 있지만, 쉽게 사라지고 생성되는 특징 때문에 직접 통신하는 방법은 권장되지 않는다. 쿠버네티스는 파드와 직접 통신하는 방법 대신, 별도의 고정된 IP를 가진 서비스를 만들고 그 서비스를 통해 파드에 접근하는 방식을 사용함.
외부요청 → 서비스 → 다수의 파드 중 하나 로 요청이 전달됨
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
spec:
  selector:
    matchLabels:
      app: counter
      tier: db
  template:
    metadata:
      labels:
        app: counter
        tier: db
    spec:
      containers:
        - name: redis
          image: redis
          ports:
            - containerPort: 6379
              protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: redis
spec:
  ports:
    - port: 6379
      protocol: TCP
  selector:
    app: counter
    tier: dbspec.ports.port : 서비스가 생성할 포트
spec.ports.targetPort : 서비스가 접근할 파드의 포트 (기본값은 위와같음)
spec.selector : 서비스가 접근할 파드의 라벨 조건
서비스 종류
- ClusterIP
 - 기본 타입. 클러스터 내부에서만 사용 가능하다
 
- NordPort
 - 클러스터 외부에서 접근 가능.
 
- LoadBalancer
 - NordPort의 단점은 노드가 사라졌을 때 자동으로 다른 노드를 통해 접근이 불가능하다는 점이다.
 - 자동으로 살아 있는 노드에 접근하기 위해 모든 노드를 바라보는 로드밸런서가 필요하다.
 - 브라우저는 NordPort에 직접 요청을 보내는 것이 아니라 로드 밸런서에 요청하고 로드 밸런서가 알아서 살아 있는 노드에 접근하면 노드포트의 단점을 없앨 수 있다.
 
실전에선 서비스보다 인그레스를 주로 사용함.

Loading Comments...