심플코더
간단한 코딩 공간
   

글쓰기    관리    수식입력
  • 분류 전체보기 (84)
    • AWS (1)
    • JavaScript (11)
    • 개인학습 (5)
    • DB (11)
    • OS (9)
    • Network (7)
    • DevOps (0)
    • TypeScript (1)
    • 개발 (1)
    • CKA (28)
hELLO · Designed By 정상우.
심플코더

간단한 코딩 공간

CKA

Kubernetes Deployment 업데이트와 롤백

 

 Kubernetes - Deployment 업데이트와 롤백(rollback)

 

Deployment는 단순히 파드를 생성하는 역할만 하는 게 아니라, 애플리케이션의 버전을 관리하고 롤백할 수 있는 기능도 지원한다. 이를 통해 배포 중 문제가 생겼을 때 손쉽게 이전 버전으로 복구할 수 있다.

 

 

롤아웃(Rollout)과 리비전(Revision)

 

Deployment를 처음 생성하면 하나의 **롤아웃(Rollout)**이 시작되고, 리비전 1이 만들어진다.

kubectl create -f deployment.yaml

이후, 애플리케이션 버전을 업데이트하면 다시 롤아웃이 발생하고, 그때마다 새로운 **리비전(Revision)**이 생성된다. 예를 들어 새로운 컨테이너 이미지로 업데이트하면 리비전 2가 생기는 식이다.

 

 

 롤아웃 상태 확인

kubectl rollout status deployment/my-deployment

 

리비전 내역 확인

kubectl rollout history deployment/my-deployment

 

 


 

Deployment 전략 (Recreate vs RollingUpdate)

 

Deployment에는 대표적으로 두 가지 배포 전략이 있다.

 

 

1. Recreate 전략

 

  • 기존의 파드를 모두 먼저 삭제하고
  • 새로운 파드를 그 다음에 생성함
  • 이 과정에서 서비스가 잠시 중단될 수 있음 (다운타임 발생)

 

2. RollingUpdate 전략 (기본값)

 

  • 기존 파드를 하나씩 제거하면서, 동시에
  • 새로운 파드를 하나씩 생성함
  • 이 방식은 서비스가 중단되지 않도록 도와준다

 

아무 설정도 하지 않으면 기본 전략은 RollingUpdate다.

 

 

 

 Deployment 업데이트 방법

 

1. 정의 파일을 수정하고 적용

kubectl apply -f deployment.yaml

이렇게 하면 새로운 롤아웃이 트리거되고, 리비전이 하나 더 생긴다.

 

 

2. 명령어로 이미지 직접 업데이트

kubectl set image deployment/my-deployment my-container=my-image:v2

이 방법은 간편하긴 하지만, **정의 파일(deployment.yaml)**과 실제 상태가 달라질 수 있어서 관리 측면에서는 주의가 필요하다.

 

 

전략별 업데이트 확인

kubectl describe deployment my-deployment

 

  • Recreate 전략:
    • 기존 ReplicaSet이 0으로 줄어든 뒤
    • 새 ReplicaSet이 5로 증가
  •  
  • RollingUpdate 전략:
    • 기존 ReplicaSet이 1씩 줄어들고
    • 동시에 새 ReplicaSet이 1씩 증가

 

 

 배포의 내부 동작 방식

 

Deployment가 동작할 때는 ReplicaSet이 자동으로 생성된다.

 

  • 처음 배포하면 → ReplicaSet 1개 생성 → 파드 5개 생성
  • 업데이트하면 → 새로운 ReplicaSet 생성 → 파드 교체 진행 (기존 ReplicaSet은 점점 줄어들며 제거됨)
kubectl get replicaset

이 명령으로 여러 ReplicaSet을 확인할 수 있고, 각각 몇 개의 파드를 유지 중인지도 볼 수 있다.

 

 

 롤백 (Rollback)

 

업데이트한 뒤 문제가 생겼을 경우, 이전 버전으로 롤백할 수 있다.

kubectl rollout undo deployment/my-deployment

 

  • 새로운 ReplicaSet은 제거되고
  • 이전 버전의 ReplicaSet이 다시 살아나면서 파드를 생성한다
kubectl get replicaset

롤백 전:

  • old RS → 0 pods
  • new RS → 5 pods

 

롤백 후:

  • old RS → 5 pods
  • new RS → 0 pods

 

 

자주 쓰는 명령어

명령어설명

kubectl create -f 배포 생성
kubectl get deployments 배포 목록 조회
kubectl apply -f 배포 업데이트 (정의 파일 기반)
kubectl set image 이미지 업데이트 (명령어 기반)
kubectl rollout status 배포 상태 확인
kubectl rollout history 리비전 히스토리 확인
kubectl rollout undo 이전 버전으로 롤백

 

 

'CKA' 카테고리의 다른 글

Docker 명령어와 엔트리포인트(CMD vs ENTRYPOINT)  (0) 2025.04.09
Kubernetes Logging  (0) 2025.04.02
Kubernetes Monitoring  (0) 2025.04.01
Kubernetes Admission Controller의 두 가지 유형  (0) 2025.03.30
(TIL) Scheduler Profiles  (0) 2025.03.30
    'CKA' 카테고리의 다른 글
    • Docker 명령어와 엔트리포인트(CMD vs ENTRYPOINT)
    • Kubernetes Logging
    • Kubernetes Monitoring
    • Kubernetes Admission Controller의 두 가지 유형
    심플코더
    심플코더

    티스토리툴바