1. Deployment
- 쿠버네티스 클러스터에서 애플리케이션을 배포하는 가장 일반적인 방식
- ReplicaSet 컨트롤러를 통해 replica 수 보장 및 scaling 가능
- Rolling update 또는 Rollback 지원
2. Deployment는 ReplicaSet 컨트롤러를 이용해 Pod scaling을 지원
$ kubectl scale deployment <deploy_name> --replicas=N
- scale-out : 애플리케이션 Pod수를 확장하여 처리능력을 향상
- scale-in: 애플리케이션 Pod수를 줄여서 리소스 낭비를 최소화
3. Rolling Update & Rolling back
- Rolling Update: 동작중인 애플리케이션의 서비스 중단 없이 점진적으로 Pod 업데이트
$ kubectl set image deployment <deploy_name> <container_name>=<new_version_image> --record
- Rollback: 동작중인 애플리케이션 서비스 중단 없이 이전 버전으로 되돌리기
# deployment 수정사항 확인
$ kubectl rollout history deployment <deploy_name>
# 이전 버전으로 되돌리기
$ kubectl rollout undo deployment <deploy_name>
# 버전을 선택하여 이전 버전으로 되돌리기
$ kubectl rollout undo deployment <deploy_name> --to-revision=NUMBER
※ 문제1: Deployment & Scaling
(참고 URL : https://kubernetes.io/ko/docs/concepts/workloads/controllers/deployment/)
a. webserver 라는 이름으로 deployment를 생성하시오.
- Name: webserver
- 2 replicas
- label: app_env_stage=dev
- container name: webserver
- container image: nginx:1.14
b. 다음, webserver Deployment의 pod 수를 3개로 확장하시오.
- 작업 클러스터 확인
- deployment 생성 및 yaml 파일 편집기로 이동
- vi 에디터로 yaml 파일 편집 및 작성 후 저장
- 만들었던 yaml 파일 apply
- deployment 생성 확인
- webserver의 deployment의 pod 수를 3개로 확장
- webserver의 deployment의 pod수가 3개로 바뀐 것을 확인
※ 문제2: Rolling update & Rollback
(참고 URL : https://kubernetes.io/ko/docs/concepts/workloads/controllers/deployment/)
- 작업 클러스터: k8s
- Deployment를 이용해 nginx 파드를 3개 배포한 다음 컨테이너 이미지 버전을 rolling update하고 update record를 기록합니다.
- 마지막으로 컨테이너 이미지를 previous version으로 rollback 합니다.
- name: eshop-payment
- Image: nginx
- Image version: 1.16
- update image version: 1.17
- label: app=payment, environment=production
- 작업 클러스터 확인
- deployment 생성 및 yaml 파일 편집기로 이동
- vi 에디터로 yaml 파일 편집 및 작성 후 저장
- 만들었던 yaml 파일 apply와 record를 기록
- 컨테이너 이미지 버전을 rolling update 후 record로 기록
- 컨테이너 이미지 버전 rolling update한 기록 확인
- 컨테이너 이미지를 previous version으로 rollback
- rollback한 기록 확인