[Kubernetes] Service (서비스) 란?

2023. 6. 26. 15:26기술 창고/Kubernetes

728x90
반응형
SMALL

쿠버네티스로 서비스들을 관리하는 기법 중 하나인 Pod 는 간단하게 사용되고 버려지는 용도로 주로 사용됩니다.

따라서 수명도 짧다고 볼 수 있습니다.

 

또한 외부 브라우저에서 Pod 에 접근할 수 없습니다.

 

Service는 Pod 보다 더욱 긴 수명을 가지고 있고, Service 는 ip 와 함께 안정되고 고정된 포트를 가지고 있습니다.

이 Service를 Pod 처럼 단독적으로 사용할 수도 있지만 Pod에 부착해서 사용할 수도 있습니다.

 

Service를 이용하게 되면 Pod를 사용했을 때 외부 브라우저에서 호출했을 당시 접속이 안되던 문제를 브라우저와 Pod 사이에 위치시킴으로서 연결될 수 있게끔 할 수 있습니다.

 

 

Pod는 label 이라고 하는 구분값을 가지고 있을 수 있습니다.

일련의 키:값 한 쌍을 만들어서 구분값으로 가지고 있습니다.

위의 예시 이미지를 보게 되면 Pod는 App 이라는 Label에 webapp이라는 값을 가지도록 되어있습니다.

 

그리고 Service에는 Selector 라는 것을 가지고 있습니다.

Selector 또한 Label 과 같이 일련의 키:값 구조를 이루는 쌍입니다.

쿠버네티스 클러스터가 시실행되는 동안 Service 는 Pod에 있는 키:값 중 자신과 어울리는 것을 찾아냅니다.

즉, 해당 Pod 를 선택해서 연결하는 것입니다.

 

 


 

Service 작성 테스트

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/ 

 

Kubernetes API Reference Docs

 

kubernetes.io

 

우선 문서 사이트에 가서 정보를 확인해봅니다.

Service v1 core 내용을 확인해줍시다.
내용을 확인해보면,

- kind: Service
용도는 Service 임을 명시합니다.

- apiVersion: v1 
지원 api 버전은 v1 인 것을 명시합니다.

- metadata:
    name: service-example 
Service이름은 service-example.

- spec:
    ports:
      - name: http
        port: 80
        targetPort: 80
    selector:
       app: nginx
    type: LoadBalancer
스펙 중 포트는 80번 포트, 연결할 Pod 혹은 container 의 포트는 80, 이름은 http로 지정.
Service의 selector label 은 app 그리고 값은 nginx 이라고 지정.
타입은 로드밸런서로 지정.

 

이러한 양식으로 Service는 yml 파일로 작성될 것입니다.
이 내용들을 제가 설정할 값들로 변경해서 넣어주면 됩니다.

728x90
반응형
LIST