Search
Duplicate

Service

생성일
2021/05/04 20:24
태그

Services

Kubernetes Services는 애플리케이션 내부와 외부의 다양한 구성 요소 간의 통신을 가능하게 함

External Communication

외부 유저web page 에 접속하는 방법은?
노드 안에서 (예상대로 애플리케이션에 도달 할 수 있음)
바깥쪽에서 (중간에 무언가가 없으면 응용 프로그램에 도달하지 못함)

Service Types

kubernetes의 3가지 Service type

1. NodePort

클러스터 IP로만 접근이 가능한것이 아니라,IP와 포트를 통해서도 Node 내부 Pod에 접근이 가능하게 된다.
가질 수 있는 port area는 30000~32767까지
필수 영역은 port, target port는 입력 안할시 port와 동일하고, nodePort는 입력 안할 시 가능한 것중 랜덤으로 부여
apiVersion: v1 kind: Service metadata: name: myapp-service spec: types: NodePort ports: - targetPort: 80 port: 80 nodePort: 30008
Plain Text
복사

To connect the service to the pod

Service만 생성하고 Pod에 연결하지 않으면 작동하지 않음
Selector와 Label을 지정해주어야만 실제 pod와 연결할 수 있음
apiVersion: v1 kind: Service metadata: name: myapp-service spec: types: NodePort ports: - targetPort: 80 port: 80 nodePort: 30008 selector: app: myapp type: front-end
Plain Text
복사

To create the service

$ kubectl create -f service-definition.yaml
Plain Text
복사

To list the services

$ kubectl get services
Plain Text
복사

웹 브라우저 없이 CLI로 어플리케이션 access

$ curl <http://192.168.1.2:30008>
Plain Text
복사

A service with multiple pods

Pods 들이 여러 Node에 분산되어 있을 때

k8s 에서 알아서 Cluster를 Service로 묶어주므로 별다른 구성 없이 동일 Port 통해서 access 가능

2. ClusterIP

이 경우 서비스는 클러스터 내에 가상 IP 를 생성하여 프런트 엔드 서버 세트와 같은 다른 서비스와 백엔드 서버 세트 간의 통신을 가능하게합니다.
디폴트 설정으로, 서비스에 클러스터 IP (내부 IP)를 할당한다. 쿠버네티스 클러스터 내에서는 이 서비스에 접근이 가능하지만, 클러스터 외부에서는 외부 IP 를 할당 받지 못했기 때문에, 접근이 불가능하다

이러한 서비스 또는 계층 간의 연결을 설정하는 올바른 방법은 무엇입니까?

kubernetes 서비스는 포드를 그룹화하고 그룹의 포드에 액세스 할 수있는 단일 인터페이스를 제공하는 데 도움이 될 수 있습니다.

To create a service of type ClusterIP

apiVersion: v1 kind: Service metadata: name: back-end spec: types: ClusterIP ports: - targetPort: 80 port: 80 selector: app: myapp type: back-end
Plain Text
복사
$ kubectl create -f service-definition.yaml
Plain Text
복사

To list the services

$ kubectl get services
Plain Text
복사

3. LoadBalancer

Where the service provisions a loadbalancer for our application in supported cloud providers.
보통 클라우드 벤더에서 제공하는 설정 방식으로, 외부 IP 를 가지고 있는 로드밸런서를 할당한다. 외부 IP를 가지고 있기 때문에, 클러스터 외부에서 접근이 가능하다.
K8s Reference Docs: