쿠버네티스 - Scale Out

pa324·2019년 5월 30일
1

Goal

  • 쿠버네티스 애플리케이션을 Scale Out 한다.

Scale out

 Pod에 트래픽이 증가하면, 사용자 요청에 맞추어 App의 규모를 조정할 필요가 있다.
Deployment의 Replica를 변경하면 스케일링이 수행된다.

 Deployment를 Scale Out하면 신규 파드가 생성되어서 이용가능한 자원이 있는 Node에 스케쥴된다.

 Service는 노출된 Deployment의 모든 Pod에 트래픽을 분산시켜줄 통합 로드밸런서를 갖는다. 또한, End-point를 이용해서 구동중인 Pod를 지속적으로 모니터링함으로써 가용한 파드에만 트래픽이 전달되도록 한다.

실습

Step1 : deployment 스케일링

  1. 현재 deployment 상태 확인하기
kubectl get deployments

 k8s 클러스터에 존재하는 deployment를 확인한다. UP-TO-DATE 항목에서 설정된 replicas를 확인할 수 있다. 현재는 1로 설정이 되어 있다. AVAILABLE는 replicas중에서 실제로 이용가능한 갯수를 보여준다.

Step2 : deployment replica 변경

  1. deployment replica 변경하기
kubectl scale deployments/kubernetes-bootcamp --replicas=4

replicas 를 4로변경하고 kubectl get deployments를 입력하면 UP-TO-DATE가 변경된 것을 확인할 수있다. Deployment에 변경이 적용된것 이고, 4개의 app인스턴스가 이용가능한 상태이다.

Step3 : Service Load - Balancing 확인하기

4개의 앱인스턴스가 구동중인 k8s 클러스터에서 Service가 Load-balancing을 해주는지 확인을 해보겠습니다.

  1.  NODE_PORT라는 환경변수를 생성하겠습니다.
export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
$ echo NODE_PORT=$NODE_PORT
  1. 환경변수로 설정된 NODE_PORT에 curl 요청 보내기
curl $(minikube ip):$NODE_PORT
  1. 명령어를 연속해서 입력 해보면, 서로 다른 IP주소로 요청이 가는것을 확인할 수 있습니다.

profile
안녕하세요

0개의 댓글