ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 Part 3.3
    STUDY/Docker 2023. 5. 24. 23:54

    쿠버네티스 연결을 담당하는 서비스

     

    쿠버네티스에서 서비스란?

    외부에서 쿠버네티스 클러스터에 접속하는 방법을 서비스(Service)라고 한다. 서비스를 '소비를 위한 도움을 제공한다'는 관점으로 바라본다면 쿠버네티스가 외부에서 쿠버네티스 클러스터에 접속하기 위한 '서비스'를 제공한다고 볼 수 있다.

     

    1. 가장 간단하게 연결하는 노드포트

    외부에서 쿠버네티스 클러스터의 내부에 접속하는 가장 쉬운 방법은 노드포트(NodePort) 서비스를 이용하는 것이다.노트포트 서비스를 설정하면 모든 워커 노드의 특정 포트(노드포트)를 열고 여기로 오는 모든 요청을 노드포트 서비스로 전달한다. 그리고 노드포트 서비스는 해당 업무를 처리할 수 있는 파드로 요청을 전달한다.

     

    노드포트 서비스 구성도

     

    2. 사용 목적별로 연결하는 인그레스

    노드포트 서비스는 포트를 중복 사용할 수 없어서 1개의 노드포트에 1개의 디플로이먼트만 적용된다. 여러 개의 디플로이먼트가 있는 경우에는, 그 수만큼 노드포트 서비스를 구동해야 할까?

     

    쿠버네티스에서는 이런 경우 인그레스를 사용한다. 인그레스(Ingress)는 고유한 주소를 제공해 사용 목적에 따라 다른 응답을 제공할 수 있고, 트래픽에 대한 L4/L7 로드밸런스와 보안 인증서를 처리하는 기능을 제공한다. 인그레스를 사용하려면 인그레스 컨트롤러가 필요하다(ex. NGINX 인그레스 컨트롤러 등). 인그레스 컨트롤러는 파드와 직접 통신할 수 없어서 노드포트 또는 로드밸런스 서비스와 연동되어야 한다. 인그레스 컨트롤러의 궁극적인 목적은 사용자가 접속하는 경로에 따라 다른 결과값을 제공하는 것이다.

     

    NGINX 인그레스 컨트롤러 서비스 구성도

     

    NGINX 인그레스 컨트롤러 동작 순서

    1. 사용자는 노드마다 설정된 노드포트를 통해 노드포트 서비스로 접속한다. 이때 노드포트 서비스를 NGINX 인그레스 컨트롤러로 구성한다.

    2. NGINX 인그레스 컨트롤러는 사용자의 접속 경로에 따라 적합한 클러스터 IP 서비스로 경로를 제공한다.

    3. 클러스터 IP 서비스는 사용자를 해당 파드로 연결해준다.

     

    3. 클라우드에서 쉽게 구성 가능한 로드밸런서

    위에 나오는 연결 방식은 들어오는 요청을 모두 워커 노드의 노드포트를 통해 노드포트 서비스로 이동하고 이를 다시 쿠버네티스의 파드로 보내는 구조인데, 매우 비효율적이다. 그래서 쿠버네티스에서는 로드밸런서(lOADbALANCER)라는 서비스 타입을 제공해 간단한 구조로 파드를 외붕에 노출하고 부하를 분산한다.

     

    로드밸런서 서비스 구성도

     

    로드밸런서를 사용하려면 로드밸런서를 이미 구현해 둔 서비스업체의 도움을 받아 쿠버네티스 클러스터 외부에 구현해야 한다. 만약 클라우드에서 제공하는 쿠버네티스를 사용한다면, 명령어 실행을 통해 쿠버네티스 클러스터에 로드밸런서 서비스가 생성돼 외부와 통신할 수 있는 IP(EXTERNAL_IP)가 부여되고 외부와 통신할 수 있으며 부하도 분산된다.

    $ kubectl expost deployment ex-lb --type=LoadBalancer --name=ex-svc

     

    4. 부하에 따라 자동으로 파드 수를 조절하는 HPA

    지금까지는 사용자 1명이 파드에 접근하는 방법이었는데, 만약 사용자가 늘어나게 되면 어떻게 될까? 파드가 더 이상 감당할 수 없어서 서비스 불가라는 결과를 초래할 수 있다. 쿠버네티스에서는 이런 경우를 대비해 파드 부하량에 따라 디플로이먼트의 파드 수를 유동적으로 관리하는 HPA(Horizontal Pod Autoscaler)라는 기능을 제공한다. HPA 기능을 잘 활용하면 자원의 사용을 극대화하면서 서비스 가동률을 높일 수 있다.

     

    HPA 작동 구조

Designed by Tistory.