본문으로 바로가기

Deployment 개념 및 yaml 파일로 작성 실습

category Kubernetes 2021. 6. 7. 11:01
반응형

 

1.ReplicaSet

Deployment의 개념중에서 가장 중요한 것은 ReplicaSet이다. Label Selector를 통해 노드 상의 여러 Pod의 생성/복제/삭제 등의 라이프 싸이클을 관리한다.

1) 지정한 Replica의 숫자만큼 Pod 수 생성/ 유지

2) Label Selector를 통한 Pod 타겟팅

2. Deployment 

Kubernetes에서 Application 단위를 관리하는 Controller 이며 Kubernetes의 최소 유닛인 Pod에 대한 기준스펙을 정의한 오브젝트 이다. 쿠버네티스 에서는 각 오브젝트를 독립적으로 생성하기 보다는 Deployment를 통해서 생성하는 것을 권장하고 있으며, Pod와 ReplicaSet의 기준정보를 지정할 수 있다.

1) Pod의 scali in/out 되는 기준을 정의한다.

2) Pod의 배포되고 update 되는 모든 버전을 추적할 수 있다.

3) 배포된 Pod에 대한 rollback을 수행할 수 있다.

 

 

yaml 파일 작성(nginx 기반의)

실행 결과. 

deplyment 생성 pod 3개

pods 정보조회

워커 노드 1,2에 각각 분배 되어있는 것을 확인

워커노드 1,2 둘중 하나를 끄게 될경우? (장애발생 상황)

worker노드 2를 종료했지만 Replica set 3을 유지하기 위해 1에서 두개가 자동으로 올라온것을 확인.

Replicaset을 다시 늘리고 싶다면, yaml 파일 수정 or scale 명령어를 사용하면 된다.

위의 예제에서 사용한 파일인 nginx.yaml 파일의 replicaset을 3 -> 10으로 변경 한 후 다시 apply 해보자.

10개로 늘어난 것을 확인.

다시 apply를 한다고 해서 deployment가 늘어난 것이 아니라, 기존의 deployment를 업데이트 한 것처럼 적용 되었다.

워커노드 에도 다시 재분배 된것을 확인 할 수 있다.

3. 롤아웃 기능

쿠버네티스 클러스터에 소프트웨어나 서비스를 개시하는 것 

즉, 컨테이너의 버전을 업데이트

(1) 업그레이드 할 이미지를 생성하고

(2) 롤아웃을 한다.

기존의 yaml 파일에 nginx:1.16 버전을 1.17 버전으로 수정 후 apply 해서 확인해 보았다.

적용 후 몇개의 컨테이너는 삭제되고 몇개의 컨테이너는 runnig 이다. 컨테이너를 삭제 후 다시 올리는 개념이라. 시간이 지나면 전부 running으로 바뀔 것이다.

4. 롤백 기능

롤아웃 전에 사용하던 예전 컨테이너로 되돌리는 것

kubectl rollout undo deployment [deployment name]  //명령어

롤 아웃 후 nginx 버전 1.17로 업데이트 됐으나.

롤백기능 사용한 후

deploymenet -o wide 옵션 사용후 조회 해보면 images도 1.16으로 롤백 됐다.

이제 docker 컨테이너에서 확인을 해보면 

1.16.1 버전으로 롤백 됐다

 

반응형

'Kubernetes' 카테고리의 다른 글

쿠버네티스 아키텍처  (0) 2021.06.08
Kubernetes (생성,삭제,확인,로그)  (0) 2021.06.08
쿠버네티스 클러스터 재구성(초기화)  (0) 2021.06.05
쿠버네티스 설치  (0) 2021.06.03
쿠버네티스란 ?  (0) 2021.06.03