[Kubernetes의 Services란?]
쿠버네티스 공식 페이지의 설명: 파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법
용어집
kubernetes.io
즉, "pod들의 서비스를 외부로 노출하기 위한 방법" 정도인데, 그렇다면 pod의 IP를 직접 노출하면 되지 않을까 라는 생각이 들 수도 있다.
하지만 pod의 경우 휘발성이라 다운되고 새로운 pod이 올라올 경우 새로운 IP를 할당받아 구동되게 된다.
그러므로 pod의 IP를 직접 외부로 노출하는 방법은 잘못되었고, 서비스를 통해 고정된 IP로 접근할 수 있도록 하는 방법이다.
예제: Flink의 Admin Web UI를 서비스를 통해 외부로 노출
Apache Flink의 예제를 보면 JobManager Deployment를 정의하고, 이를 외부로 노출하기위해 다양한 서비스 정의를 제공하고 있다.
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 |