기술나눔

k8s에 노출된 서비스의 종류 및 활용

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. 설명
Kubernetes에는 서비스를 외부 트래픽에 노출하는 여러 가지 방법이 있습니다. 이러한 모드는 서비스의 spec.type 필드를 정의하여 결정됩니다.
2. 자세한 설명
1. 클러스터IP
정의: 기본 유형, 서비스는 클러스터 내에서만 액세스할 수 있습니다.
기능: 클러스터 내부 IP 주소를 통해 서비스를 노출합니다.
예:

spec:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: 8080
  • 1
  • 2
  • 3
  • 4
  • 5

2.노드포트
정의: 외부 트래픽이 서비스에 액세스할 수 있도록 각 노드에서 높은 포트(일반적으로 30000-32767)를 엽니다.
기능: 모든 노드의 IP 주소와 nodePort를 통해 서비스에 액세스합니다.
예:

spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 30007
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3. 로드 밸런서

정의: 클라우드 플랫폼에서 제공하는 로드밸런서는 서비스에 외부 IP 주소를 할당합니다.
기능: 이 IP 주소를 통해 서비스에 접근하며, 외부 트래픽 부하 분산이 필요한 상황에 적합합니다.
예:

spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app: my-app
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4. 외부 이름

정의: 서비스를 외부 도메인 이름(예: 데이터베이스 서비스)에 매핑합니다.
기능: 클러스터 내부 IP나 노드 IP를 통하지 않고 지정된 외부 도메인 이름을 통해 서비스에 액세스합니다.
예:

spec:
  type: ExternalName
  externalName: example.com
  • 1
  • 2
  • 3

2. 요약
ClusterIP: 기본 서비스 유형으로 클러스터 내에서만 액세스할 수 있습니다.
NodePort: 외부 트래픽이 서비스에 액세스할 수 있도록 각 노드에서 포트를 엽니다.
LoadBalancer: 클라우드 플랫폼에서 제공하는 로드밸런서는 외부 IP 주소를 할당하는데, 이는 로드밸런싱이 필요한 상황에 적합합니다.
외부 이름: 외부 서비스에 대한 액세스가 필요한 시나리오에 적합한 외부 도메인 이름에 서비스를 매핑합니다.