
이전의 실습에서 다음을 수행했다.
이번에는 앱을 스케일업해보자
현재는 파드 내 단일컨테이너이다. 만약 트래픽이 증가해서 이 컨테이너에 트래픽이 너무 몰리면 앱이 다운되어버릴 수 있다. 그런 경우 대비하여 트래픽을 분산해서 받을 수 있는 복제본을 생성한다.
아래 명령어로 확장하고자 하는 서비스를 찾는다. 이전에는 hello-node이다.
kubectl get deployments
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의 제어를 받는 하위 컨트롤러이다. Deployment가 ReplicaSet의 생성 및 관리를 수행하고 ReplicaSet은 파드의 복제본을 관리한다.
Deployment는 파드 업데이트 및 롤백 등을 자동으로 관리하지만 ReplicaSet은 그렇지 못함.
Scale your app - k8s 공식 tutorial