71일차

장민우·2024년 7월 12일

디플로이먼트


디플로이먼트는 애플리케이션(컨트롤러, 파드)을 배포하고 선언적으로 업데이트를 수행하는 리소스이다. 디플로이먼트 리소스는, 하위에 레플리카셋 컨트롤러를 제어하고, 그리고 레플리카셋 컨트롤러가 하위 파드를 제어하는 구조이다.

  • RollingUpdate: 롤링 업데이트 방식(기본값)
    • maxUnavailable: 롤링업데이트 프로세스 중에 사용할 수 없는 최대 파드의 수(기본값 :25%)
    • maxSurge: 생ㄷ성할 수 있는 최대 파드의 수 (기본값: 25%)
  • Recreate: 재생성(기존 파드는 모두 삭제되고, 새로운 파드 생성)
  • minReadSconds: 새로 배포된 컨테이너가 준비되기 까지 대기할 시간(기본값 : 0초)

#vim myapp-deploy.yml

일부러 오타를 만든 후
#kubectl crete -f myapp-deploy.yml

다시 #vim myapp-deploy.yml 수정 후.

#kubectl apply -f myapp-deploy.yml

apply를 했지만 기존의 레플리카셋은 남아있고 파드만 새로 작성되었다.
#watch -n1 kubectl get deploy,po,replicasets.apps,deployments.apps

다른 방식으로 이미지를 변경하고 확인하는 방법.

#kubectl edit deployments.apps myapp-deploy 로 수정한 deployment의 CHANGE-CAUSE를 바꿔줄 수 있다.

백업

ghcr.io/c1t1d0s7/go-myweb:v1으로 일부러 오타를 낸 후
RollingUpdate를 추가하면

파드가 1개를 실행하다가 멈춘다.

#kubectl rollout history deployment myapp-deploy로 확인 후. (Deployment파일에 kubernetes.io/change-cause: 를 추가하지 않으면 버전이 작성되지 않는다.)
이전 버전으로 돌아갈 수 있다.
#kubectl rollout undo deployment myapp-deploy --to-revision=3


스테이트풀셋(StatefulSet)


  • 파드마다 각각 다른 스토리지를 사용해 각각 다른 상태를 유지하기 위해 사용.

#vim myapp-sts.yml

#vim myapp-svc-headless.yml

파드별로 접속이 가능함.


기존에있던 스토리지클래스로 스테이트풀셋 생성.

0개의 댓글