본문 바로가기

Tech/[Container] Kubernetes

쿠버네티스 컨트롤러 - ReplicaSet

Controller

Controller Overview

  • Kubernetes에는 여러 Controller가 존재하며, 각 Controller는 특정 리소스 상태를 지속적으로 감시하고 실제 상태가 원하는 상태(Desired State)가 되도록 조정(Reconciliation Loop) 하는 역할을 수행
  • ReplicaSet → Pod 개수 유지 (Auto Healing)
  • Deployment → 롤링 업데이트 / 롤백
  • HPA → Auto Scaling
  • Job / CronJob → 배치성 실행

 

Controller - ReplicaSet

Template

  • Replication에 Selector로 매핑된 pod이 죽으면 template에 정의된 pod을 재생성
    → 위 방식을 활용해 수동으로 버전 업데이트 가능 (template 정의 파일 수정 후 version 부분 변경 후 기존 pod 직접 삭제)
  • ReplicaSet이 Pod를 소유하려면 selector가 템플릿의 라벨과 일치해야함

Replicas

  • replicas 로 정의한 수만큼 Pod을 유지하는 방식
  • 사용자가 직접 생성한 pod의 경우 replicaSet의 관리 범위를 벗어나게 됨
    → 별도 pod 생성 없이 replicaSet를 생성하면 replicas와 template를 참조해 자동 생성함

Selector의 matchLabels

  • matchLabels 값과 같은 Label들의 Pod을 선택

Selector의 matchExpressions

  • matchLabels 보다 더 다양한 표현식을 활용하여 여러 Label 들을 선택
  • Exists: 해당 Key가 Label에 있을 경우
  • DoesNotExist: 해당 Key가 Label에 없을 경우
  • In: 해당 Key가 Label에 있으며, 지정된 values 목록 중 하나와 일치할 경우
  • NotIn: 해당 Key가 Label에 있으며, 지정된 values 목록에 없을 경우

 

Reference : https://inf.run/yW34