본문으로 바로가기

컨트롤러 (ReplicaSet, Deployment)

category MLOps/K8S 2022. 3. 26. 16:44

컨트롤러

- 개념 : 파드를 관리하는 오브젝트

- 파드 관리 방식 : Label과 Selector 사용 ( Label은 파드에 설정. Selector는 컨트롤러에 설정 )

- 종류 :

       레플리카셋

       디플로이먼트

       데몬셋

       스테이트풀셋

       잡

       크론잡

 

레플리카셋

- 파드의 정해진 수 만큼 복제하고 관리
- 레플리케이션 컨트롤러의 업그레이드 버전 (균등기반+집합기반)

- 기존버전 (레플리케이션 컨트롤러 사용)
- 기능 : 업데이트 + 복제본 관리(등호기반)

- 현재 (레플리카셋)
- 기능 : 복제본 관리 (집합기반)
- 업데이트 기능은 디플로이먼트로 관리
=> 디플로이먼트를 통해서 레플리카셋 및 파드를 생성하고 관리: 실전에서는 주로 Deployment 사용

 

레플리카셋 실습

 

디플로이먼트

레플리카셋을 관리해주는 컨트롤러
업데이트 정책(배포 방식)을 지원
       롤링업데이트 - 새로운 RS 및 파드 생성 (순차적으로 하나씩)
              maxSurge : 파드 생성 시 비율(개수) 지정
              maxUnavailable : 오류가 발생한 파드의 허용 비율(개수)
       리크리에이트 - 기존의 파드 제거 후 새로운 RS 및 파드 생성

- 버전관리를 위한 목적이 크다.
- 수정 작업 시 명령어
       $ kubectl  set image : 이미지를 변경
       $ kubectl  edit  : 이미지 포함 설정 변경 가능
       $ kubectl  apply : 템플릿파일 수정 및 배포
       -> 리비전 넘버는 항상 증가
       따로 이유는 기록되지 않음 (관리가 힘들 수 있다)
       --record 옵션으로 명령어 자체를 기록
       혹은 annotations 항목에서 kubernetes.io/change-cause 를 설정하면 원하는 메시지를 기록 가능

- 리비전 넘버는 항상 증가 
       -> undo 명령어로 롤백 시에도 증가
       기존의 리비전넘버는 제거

- rollout 명령어 정리
       $ kubectl rollout history : 업데이트 기록
       $ kubectl rollout status : 현재 배포 작업의 상태
       $ kubectl rollout undo : 지정한 상태로 롤백

       

       $ kubectl rollout pause, resume, restart: 일시정지, 계속진행, 재시작

 

디플로이먼트 실습

- 생성 및 확인

- 이미지 교체 및 확인 (set image)

       $ kubectl set image

       $ kubectl edit deploy nginx-deployment

              -> 위의 명령어는 vi편집기 바로 실행하여 종료 시 적용

- rollout 명령어로 업데이트 내역 확인 / 취소

       $ kubectl rollout undo deploy nginx-deployment --to-revision=1 도 사용 가능

- annotation 설정 / --record

- strategy 설정

       spec 아래에 추가

'MLOps > K8S' 카테고리의 다른 글

서비스  (0) 2022.03.28
컨트롤러 (Daemonset, Statefulset, Job, CronJob)  (0) 2022.03.28
파드 관리  (0) 2022.03.26
아키텍쳐 및 명령어 기본  (0) 2022.03.26