kok202
쿠버네티스 강의 정리 ( 3강 : Scaling )

2019. 6. 1. 05:28[정리] 기능별 개념 정리/Kubernetes

지금까지의 minikube 프로젝트 클러스터 환경은 다음과 같다.

1개의 어플리케이션 프로젝트 (kubernetes-bootcamp)

1개의 마스터

1개의 deployment

1개의 public service

1개의 node

1개의 pod

 

목표 Scale out

1개의 어플리케이션 프로젝트 (kubernetes-bootcamp)

1개의 마스터

1개의 deployment

1개의 public service

3개의 node

4개의 pod

 

kubectl scale deployments/kubernetes-bootcamp --replicas=4

복제 본을 4개로 늘려서 scale out 한다.

kubectl describe services/kubernetes-bootcamp

LoadBalancing 에 의해서 endpoint 가 4개가 된 것을 확인한다.

export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
curl $(minikube ip):$NODE_PORT

노출된 NodePort 타입의 Service 의 port 번호를 가져와서 curl 을 날려본다.

 

 

 

 

 

Rolling update : 인스턴스 여러개를 이용해서 서버가 다운되지 않고도 버전을 올리는 방법

업데이트할 때 pod 의 갯수를 percent 를 이용해서 끄고 켜가면서 업데이트하게 할 수 있다.

ex. 10% 씩 업데이트해라.

 

Rolling update 의 목표

1. 어플리케이션을 컨테이너 이미지를 바꾸는 방법으로 버전 업을 지원한다.

2. 롤백을 지원한다.

3. 다운 타임 없이 CICD 를 지원한다.

 

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2

이미지를 v2 로 줘서 업데이트를 한다. (이미지가 존재하지 않는 이미지이면 ImagePullBackOff 상태가된다.)

kubectl describe pods

현재 pod의 버전을 Image 필드를 통해 확인해본다.

kubectl rollout status deployments/kubernetes-bootcamp

Rolling update를 승인한다.

kubectl rollout undo deployments/kubernetes-bootcamp

Rolling update 를 거절하고 rollback 한다.