happyso
study with happyso
happyso
전체 방문자
오늘
어제
  • 분류 전체보기 (300)
    • GIT (3)
    • 컴퓨터 기본 개념 (29)
    • 알고리즘 (125)
      • 알고리즘 문제 (115)
      • 알고리즘 개념 (10)
    • Go (2)
    • 클라우드 (53)
      • DevOps (3)
      • Kubernetes(쿠버네티스) (33)
      • AWS (6)
      • CKA (8)
    • 리눅스(Linux) (18)
      • 컨테이너(Container) (8)
    • Front (22)
      • JavaScript (2)
      • React (20)
    • Python (21)
      • Python 웹 크롤링 (11)
      • Django (7)
      • MachineLearning (3)
    • 데이터베이스 (6)
      • MariaDB (2)
      • MongoDB (4)
    • C언어 (5)
    • Trouble Shooting (2)
    • 네트워크 (8)
      • CCNA (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • kubernetes
  • replace
  • Patch
  • 15
  • 18
  • apply
  • edit

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
happyso

study with happyso

클라우드/Kubernetes(쿠버네티스)

[쿠버네티스] 컨트롤러(레플리케이션 컨트롤러, 레플리카세트, 디플로이먼트)

2021. 6. 5. 22:36

컨트롤러란?

  • 파드들을 관리하는 역할을 한다.
  • 다양한 목적에 맞게 사용할 수 있는 컨트롤러가 있다는 것이 쿠버네티스 장점
  • 예1 ) 웹서비스처럼 오랜시간동안 계속 파드들을 관리할 때 > 레플리케이션 컨트롤러, 레플리카세트, 디플로이먼트
  • 예2 ) 클러스터의 전체 노드에 같은 파드를 실행할 때는 데몬세트를 사용
  • 예3 ) 1회성 작업을 할 때 사용하는 잡
  • 예4 ) 주기적인 배치 작업을 실행할 때 사용하는 크론잡

레플리케이션 컨트롤러

  • 지정한 숫자만큼의 파드가 항상 클러스터 안에서 실행되도록 리한다.
  • 예 ) 파드 2개를 명시해둔 레플리케이션 컨트롤러가 있다면 장애나 다른 이유로 파드 갯수가 2개보다 적을 때 다시 새로운 파드를 실행해서 파드 개수를 2개로 맞춘다.
  • 컨트롤러를 사용하지 않고 파드를 직접 실행하면 파드에 이상이 생겨서 종료되거나 삭제됐을 때 재시작하기 어렵다.
  • 파드를 실행하던 노드에 장애가 발생해서 파드가 종료되었을 때, 레플리케이션 컨트롤러를 이용해서 실행한 파드라면 클러스터 안 다른 노드에 다시 파드를 실행시킨다.

레플리카세트

  • 레플리케이션 컨트롤러의 발전형
  • 레플리케이션 컨트롤러와 같은 동작을 하지만 집합 기반의 셀렉터를 지원하는 차이점이 있다.
  • 예 ) 레플리케이션 컨트롤러는 셀렉터가 등호기반이므로 레이블을 선택할 때 같은지(=) 다른지(!=)만 확인한다. 하지만 집합 기반의 셀렉터는 in, notion, exits같은 연산자를 지원한다.
  • 레플리케이션 컨트롤러는 kubectl에서 rolling-update옵션을 사용할 수 있지만 레플리카세트는 사용할 수 없다. Rolling-update옵션이 필요할. 때는 디플로이먼트를 사용해야한다.
  • spec.replicas는 파드를 몇 개 유지할지 개수를 설정하는 필드. 따로 설정하지 않으면 기본값은 1이다.
  • spec.selector는 어떤 레이블의 파드를 선택해서 관리할지를 설정. 별도의 설정이 없으면 spec.template.metadata.labels.app에 있는 내용을 기본값으로 설정
  • 파드는 레이블 기준으로 관리하므로 레플리카세트와 파드는 느슨하게 결합되어있다. —cache=fase 옵션을 사용하면 레플리카세트가 관리하는 파드에 영향을 끼치지 않고 레플리카세트만 삭제할 수 있다. 그럼 현재 실행중인 파드들을 관리하는 레플리카세트를 추가로 만들 수도 있다.
  • 레플리카 세트상태
    • DESIRED : 레플리카세트 설정에 지정한 파드 개수
    • CURRENT : 레플리카세트를 이용해 현재 클러스터에서 동작하는 실제 파드 개수

디플로이먼트

  • 쿠버네티스에서 상태가 없는 앱을 배포할 때 사용하는 가장 기본적인 컨트롤러
  • 레플리카세트를 관리하면서 앱 배포를 더 세밀하게 관리한다.
  • 배포기능을 세분화한 것
  • 단순히 실행시켜야 할 파드 개수를 유지하는 것 뿐만 아니라 앱을 배포할 때 롤링 업데이트하거나, 앱 배포 도중 잠시 멈췄다가 다시 배포할 수 있다.
  • 앱 배포 후 이전 버전으로 롤백할 수도 있다.
  • 디플로이먼트의 설정을 변경할 때마다 새로운 레플리카세트가 생성되고 그에 맞게 파드가 변경된다
  • 디플로이먼트 롤백 명령
    • kubectl rollout undo deploy [디플로이먼트이름]
  • kubectl rollout history 명령을 실행 했을 때 나오는 CHANGE-CAUSE 항목을 출력하려면 metadata.annotation 필드를 추가한다.
  • 파드 개수 조절 명령
    • kubectl scale deploy [디플로이먼트이름] —replicas=[원하는 갯수]
  • kubectl rollout 명령을 이용해서 진행 중인 배포를 잠시 멈췄다가 다시 시작할 수 있다.
  • 배포중에는 디플로이먼트 상태가 변한다.

'클라우드 > Kubernetes(쿠버네티스)' 카테고리의 다른 글

[쿠버네티스] 서비스  (0) 2021.06.07
[쿠버네티스] 컨트롤러(데몬세트, 스테이트풀세트, 잡, 크론잡)  (0) 2021.06.06
[클라우드] PaaS-TA  (0) 2021.05.27
[쿠버네티스] 컨피그맵 & 시크릿  (0) 2020.09.23
[쿠버네티스] ReplicaSet & 디플로이먼트(Deployment) & 서비스 & 네임스페이스  (0) 2020.09.22
    '클라우드/Kubernetes(쿠버네티스)' 카테고리의 다른 글
    • [쿠버네티스] 서비스
    • [쿠버네티스] 컨트롤러(데몬세트, 스테이트풀세트, 잡, 크론잡)
    • [클라우드] PaaS-TA
    • [쿠버네티스] 컨피그맵 & 시크릿
    happyso
    happyso

    티스토리툴바