본문 바로가기

Study/도커씨와쿠버씨

[쿠도읽] 쿠버네티스 오브젝트 관리? - (4)

쿠도읽 : 쿠버네티스 도큐먼트 읽기

쿠버네티스 오브젝트 관리?

쿠버네티스 오브젝트는 기법 하나로만 사용해서 관리해야 함

 

관리 기법 3가지

1. 명령형 커맨드

  • 사용자는 활성 오브젝트를 대상으로 직접 동작 시킴
  • 1개 이상의 작업자 수 지원
  • 학습 난이도 낮음
  • 일회성 작업을 동작시키기 위한 추천 방법
kubectl create deployment a --image a

 

장점 ( 비교 대상은 오브젝트 구성)

  • 하나의 동작을 나타내는 단어로 표현
  • 클러스터 수정하는데 단 하나의 단계만 필요

단점

  • 변경 검토 프로세스와 통합 X
  • 변경에 관한 감사 추적 제공 X
  • 레코드 소스 제공 X (활성 동작 중인 경우 제외)
  • 새 오브젝트 생성을 위한 템플릿 제공 X

2. 명령형 오브젝트 구성

  • 개별 파일을 대상으로 함
  • 1 개의 작업자 수 지원
  • 학습 난이도 보통
  • replace 커맨드는 기존 spec을 새로 제공된 spec으로 업데이트
# yaml파일에 따라 오브젝트 생성
kubectl create -f a.yaml

# 두 개의 yaml에 저자왼 오브젝트 삭제
kubectl delete -f a.yaml -f b.yaml

# 오브젝트 업데이트
kubectl replace -f a.yaml

 

장점 ( 비교 대상은 명령형 커맨드)

  • 오브젝트 구성은 소스 컨트롤 시스템에 보관 가능 (Git,...)
  • 오브젝트 구성은 프로세스들과 통합 가능
  • 오브젝트 구성은 새 오브젝트 생성을 위한 템플릿 제공

단점

  • 오브젝트 스키마에 대한 기본적인 이해 필요
  • YAML파일을 기록하는 추가적인 과정 필요

장점(비교 대상은 선언형 오브젝트)

  • 간결하고 이해 쉬움

단점

  • 디렉터리가 아닌, 파일에 가장 적합
  • 활성 오브젝트 업데이트는 구성 파일에 반영되어야 함

3. 선언형 오브젝트 구성

  • 파일이 있는 디렉터리를 대상으로 함
  • 1개 이상의 작업자 수를 지원
  • 학습 난이도 높음
  • 생성, 업데이트 , 삭제 작업은 kubectl에 의해 오브젝트마다 자동으로 감지
  • 변경 사항이 오브젝트 구성 파일에 병합되지 않더라도 다른 작성자가 작성한 변경 사항을 유지
  • replace API 대신 , patch API 사용
# 변경 내역 확인
kubectl diff -f configs/

# 적용
kubectl apply -f configs/

 

장점 (비교 대상은 명령형 오브젝트 구성)

  • 변경 사항 유지
  • 작업 유형의 자동 감지에 더 나은 자원 제공

단점

  • 이해 어려움