Kubernetes

Service란?

재심 2022. 12. 6. 20:34

[Kubernetes의 Services란?]

쿠버네티스 공식 페이지의 설명: 파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법

용어집 | Kubernetes

 

용어집

 

kubernetes.io

즉, "pod들의 서비스를 외부로 노출하기 위한 방법" 정도인데, 그렇다면 pod의 IP를 직접 노출하면 되지 않을까 라는 생각이 들 수도 있다.

하지만 pod의 경우 휘발성이라 다운되고 새로운 pod이 올라올 경우 새로운 IP를 할당받아 구동되게 된다.

그러므로 pod의 IP를 직접 외부로 노출하는 방법은 잘못되었고, 서비스를 통해 고정된 IP로 접근할 수 있도록 하는 방법이다.

 

예제: Flink의 Admin Web UI를 서비스를 통해 외부로 노출

Apache Flink의 예제를 보면 JobManager Deployment를 정의하고, 이를 외부로 노출하기위해 다양한 서비스 정의를 제공하고 있다.

Kubernetes | Apache Flink

 

Kubernetes

Kubernetes Setup # Getting Started # This Getting Started guide describes how to deploy a Session cluster on Kubernetes. Introduction # This page describes deploying a standalone Flink cluster on top of Kubernetes, using Flink’s standalone deployment. We

nightlies.apache.org

 

jobmanager-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: flink-jobmanager
spec:
  type: ClusterIP
  ports:
  - name: rpc
    port: 6123
  - name: blob-server
    port: 6124
  - name: webui
    port: 8081
  selector:
    app: flink
    component: jobmanager

jobmanager-rest-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: flink-jobmanager-rest
spec:
  type: NodePort
  ports:
  - name: rest
    port: 8081
    targetPort: 8081
    nodePort: 30081
  selector:
    app: flink
    component: jobmanager

 

[Service의 타입 종류]

  • ClusterIP: 관리자용. 관리자가 특정 서비스에 접근하기 위해 사용하는 IP
  • NodePort: 내부용. 내부에서 노드의 IP와 포트번호로 접근하는 방식
  • LoadBalancer: 외부용. LoadBalancer를 설정하면 EXTERNAL-IP가 할당되고, 외부에서는 이 IP로 접근하면 된다.

예제: Apache Flink의 서비스를 Cluster IP로 구성했을 때 모습

apiVersion: v1
kind: Service
metadata:
  name: flink-jobmanager
spec:
  type: ClusterIP
  ports:
  - name: rpc
    port: 6123
  - name: blob-server
    port: 6124
  - name: webui
    port: 8081
  selector:
    app: flink
    component: jobmanager
kubectl get services

[참조]

[쿠버네티스 #3] Service (tistory.com)

 

[쿠버네티스 #3] Service

나는 처음에 쿠버네티스와 마이크로서비스 아키텍처를 공부할 때, 아니 지금도 이 Service라는 말이 굉장히 헷갈린다. 왜냐하면 쿠버네티스 Object상의 service를 말하는건지 아니면 어플리케이션 자

boying-blog.tistory.com

 

'Kubernetes' 카테고리의 다른 글

Istio  (0) 2023.01.31
Service Mesh  (0) 2023.01.31
ConfigMap이란?  (0) 2022.12.06
Kubernetes Ingress?  (0) 2022.11.02