DevOps/k8s

[쿠버네티스 교과서] k8s 스터디 5주차 - 9장, 10장

민트맛녹차 2024. 9. 29. 00:18
24.09.11 ~24.09.26
k8s 사내 스터디에서 쿠버네티스 교과서 9, 10 장을 읽으며 공부한 내용

 

9. 롤아웃과 롤백을 이용한 애플리케이션 릴리스 관리

 

디플로이먼트의 두 가지 업데이트 전략

  • 롤링 업데이트 (rolling update)
  • 리크리에이트 (recreate)

 

롤아웃

  • 레플리카셋 새로 생성
  • 레플리카를 지정된 숫자만큼 생성
  • 기존 레플리셋의 레플리카 수를 0으로 낮춤

 

롤아웃은 파드의 정의가 변경될 때만 일어남

 

버전번호를 넣은 레이블 정의하여 레플리카셋에 부여 시 업데이트 내용 추적하기 수월

파드 정의 에 version 레이블 선언 가능

 

롤아웃의 주 기능은 릴리스 관리

롤아웃 히스토리 확인

롤아웃 중단

이전 리비전 롤백

 

 

핫 리로드 (hot reload)

컨피그맵/비밀값 업데이트 시 어플리케이션 동작이 변화

롤아웃이 발생하지 않음

디플로이먼트 변경이 아니므로, 되돌아갈 리비전이 없음 -> 롤백 불가

 

 

컨피그맵/비밀값 불젼요소로 간주

설정값과 함께 디플로이먼트를 업데이트 -> 롤아웃 히스토리가 남아 롤백 가능

 

 

롤링 업데이트

업데이트 시간이 길어짐

서비스 무중단 유지 가능

 

리크리에이트

레플리카 셋을 사용

기존 레플리카셋의 파드 수가 0이 된 후, 새 레플리카셋의 파드 수가 증가

어플리케이션 전체가 장애가 날 가능성 -> 위험성이 큼

 

롤링 업데이트 설정 변경 가능

파드 스케일링 속도

  • maxUnavailable : 동시 종료 파드 수
  • maxSurge : 동시 시작되는 파드 수

롤아웃 속도

  • minReadySeconds : 신규 파드 상태 안정적인지 확인하는 시간
  • progressDeadlineSeconds : 시간 초과 시 신규 파드 상태 실패로 간주하는 타임 아웃

 

데몬과 스테이트풀셋의 두 가지 업데이트 전략

  • 롤링 업데이트
  • 온딜리트 (OnDelete)

 

온딜리트 (OnDelete)

다른 프로세스가 파드 삭제 시 대체 파드를 생성하는 방식

 

롤링 업데이트

데몬셋은 노드에 파드를 하나만 실행 -> 잉여파드 생성 불가

 

스테이트풀셋은 지정한 순서대로 파드를 관리

마지막 파드 -> 첫 번째 파드까지 롤아웃 진행

업데이트 되는 파드 수는 항상 하나

parition 을 사용해 업데이트해야하는 파드 비율은 지정 가능

 

 

10. 헬름을 이용한 애플리케이션 패키징 및 관리

헬름

명령행 도구의 형태로 레포지토리 서버와 상호 작용

어플리케이션 패키지를 다운받아 클러스터에 설치 및 관리 가능

 

레포지토리 (repository) 

차트 (chart) : 어플리케이션의 패키지

릴리즈 (release) : 설치한 차트

 

 

헬름차트는 k8s 매니페스트 파일이 담긴 디렉터리

 

 

 

 

최종문제
1. Blue-Green 배포와 Canary 배포에 대해서 설명하시오. 그리고 어떤 경우 사용하면 좋을지에 대해서 설명하시오
2. 스테이트풀셋 (StatefulSet) 의 롤링 업데이트를 사용하는 이유는 무엇인가요?
3. 헬름을 사용하면 어떤 점이 편리한가요??

 

 

1. 

  • Blue-Green
    • Blue 버전 (기존) 과 Green 버전 (신규) 을 유지 후, Green 버전이 정상적이면 트래픽 한번에 전환하는 방식
    • 빠른 롤백이 필요할 때 사용
  • Canary
    • 새로운 버전을 일부 배포 후 일부 트래픽만 새 버전으로 보내며, 이후 점진적으로 새 버전을 배포하는 방식
    • 점진적인 테스트가 필요한 경우 사용

2. 순서대로 파드를 관리해야 하기 때문

3. 어플리케이션을 패키지 형태로 관리 가능하며, 버전 관리가 가능하다.