컨트롤러
- 개념 : 파드를 관리하는 오브젝트
- 파드 관리 방식 : 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 |