Skip to content

Kubernetes ClusterIP Service

ClusterIP Servie는 Kubernetes 클러스터 내의 서로 다른 Pod 간의 통신을 가능하게 하는 중요한 메커니즘입니다.

ClusterIP Servie란?

  • ClusterIP Servie는 Kubernetes 클러스터 내에서만 접근 가능한 내부 IP를 제공합니다.
  • 이 Servie를 통해 Pod 그룹에 대한 단일 접근점을 생성하며, Servie 요청은 Servie 아래의 Pod 중 하나로 무작위로 전달됩니다.
  • 예를 들어, Frontend 서버는 Backend 서버와 통신해야 하며, Backend는 MySQL 또는 Redis와 같은 Servie와 통신해야 합니다.

ClusterIP Servie의 필요성

  • Pod는 동적으로 생성되고 소멸되므로, 고정 IP 주소에 의존하는 내부 통신은 신뢰할 수 없습니다.
  • ClusterIP Servie를 사용하면, Pod들을 그룹화하고 이 그룹에 대한 단일 인터페이스를 제공하여, 안정적인 내부 통신을 보장할 수 있습니다.

ClusterIP Servie 생성 예시

YAML 파일 예시

ClusterIP Servie를 정의하는 기본 YAML 파일의 예시입니다.

yaml
apiVersion: v1
kind: Service
metadata:
  name: back-end
spec:
  type: ClusterIP
  selector:
    app: myapp
    type: back-end
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

이 YAML 파일은 app=backend 레이블을 가진 Pod들로 트래픽을 전달하는 ClusterIP Servie를 정의합니다. Servie와 Pod 간의 연결은 selector를 통해 이루어집니다.

CLI 명령어 예시

YAML 파일을 생성하지 않고 직접 ClusterIP Servie를 생성하기 위한 kubectl CLI 명령어 예시입니다.

bash
kubectl create service clusterip backend --tcp=80:80 --dry-run=client -o yaml > backend-service.yaml

이 명령어는 backend라는 이름의 ClusterIP Servie를 생성하되, 실제로 생성하는 대신 해당 Servie의 YAML 정의를 backend-service.yaml 파일로 출력합니다.

요약

  • ClusterIP Servie는 클러스터 내 Pod 간 안정적인 통신을 위한 중요한 구성 요소입니다.
  • Servie는 Pod가 속한 그룹에 대한 단일 접근점을 제공하며, Servie 이름 또는 클러스터 IP를 통해 접근할 수 있습니다.
  • YAML 파일과 kubectl CLI를 사용하여 Servie를 쉽게 생성하고 관리할 수 있습니다.

K8s Reference Docs:

https://kubernetes.io/docs/concepts/services-networking/service/https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-intro/