[쿠버네티스 튜토리얼] 앱 스케일업 해보기

Jisu·2023년 12월 4일

Kubernetes

목록 보기
3/12
post-thumbnail

배경

이전의 실습에서 다음을 수행했다.

  1. 컨테이너를 파드 단위로 deployment를 통해 배포한다. deployment는 파드를 관리하는 컨트롤러다.
  2. service 명세하여 deployment에게 IP, 포트를 할당하여 외부로 노출시킨다. 이를 통해 로컬 및 외부에서 이 서비스에 접속할 수 있다.

Scale up the app

이번에는 앱을 스케일업해보자

현재는 파드 내 단일컨테이너이다. 만약 트래픽이 증가해서 이 컨테이너에 트래픽이 너무 몰리면 앱이 다운되어버릴 수 있다. 그런 경우 대비하여 트래픽을 분산해서 받을 수 있는 복제본을 생성한다.

아래 명령어로 확장하고자 하는 서비스를 찾는다. 이전에는 hello-node이다.

kubectl get deployments

Replica Set

Pod의 복제본을 관리하는 객체

특정 파드를 복사본은 replicas 라고 불리며 그러한 여러개의 복사본 파드들을 관리하는 컨트롤러를 Replica Set 이라고 부른다.
아래 명령어로 특정 deployment의 replica set을 지정한다.

kubectl scale deployments/hello-node --replicas=4

이를 통해 hello-node 라는 deployment의 파드 개수가 4개로 확장된 것을 볼 수 있다.
즉, 이 deployment는 하나의 컨테이너를 가지는 파드 총 4개를 관리하게 된 것이다.


로드밸런싱 기능을 한번 확인해보자!

아래 코드를 통해 서비스에 접속해보자

minikube service hello-node

여기서 새로고침을 완전 빠르게 여러번 눌러보자. 이후 get pods를 통해 확인한 파드명으로 log를 조회해보자.

kubectl logs {Pods ID}

3개의 파드를 조회했고, 각기 찍힌 로그량이 다르다는 것을 볼 수 있다.
트래픽이 각 파드로 분산된 것이다.

모든 파드에 균등 배분은 아닌것을 알 수 있다. 내가 수동으로 눌러서 연속된 트래픽을 배분하는 거니 많은 사용자가 동시에 눌렀을 경우 시간이 지나면 균등에 가까워질 것으로 추론된다.

이상으로 미니큐브를 이용해서 테스트 앱을 배포하고, 서비스를 이용해서 외부 네트워크에 오픈. 수동으로 트래픽을 발생시켜 로드밸런싱이 되는것 까지 확인했다!


ReplicaSet과 Deployment의 차이점

  • ReplicaSet은 Deployment의 제어를 받는 하위 컨트롤러이다. Deployment가 ReplicaSet의 생성 및 관리를 수행하고 ReplicaSet은 파드의 복제본을 관리한다.

  • Deployment는 파드 업데이트 및 롤백 등을 자동으로 관리하지만 ReplicaSet은 그렇지 못함.


Reference

Scale your app - k8s 공식 tutorial

Running Multiple Instances of Your App

profile
기술 공유를 즐기는 DevOps Engineer 장지수입니다.

0개의 댓글