본문 바로가기
네트워크/k8s

[k8s] 12. Replication Controller, ReplicaSet

by Lauren X Ming 2021. 2. 12.

Controller

  • 쿠버네티스에는 여러 컨트롤러가 있음
  • 서비스를 관리하고 운영하는데 도움을 줌
  • 4가지의 기능을 제공함

Auto Healing

  • 노드위의 파드가 다운되거나 노드가 다운되면 다른 노드에 파드를 생성

Auto Scaling

  • 파드의 리소스가 limit 상태일 때, 컨트롤러가 파드를 하나 더 만들어서 부하를 분산시킴
  • 성능에 대한 장애없이 안정적인 운영 가능

Software Update

  • 여러 파드에 업그레이드를 해야 할 경우 컨트롤러를 통해서 한 번에 쉽게 함
  • 업그레이드 도중 문제가 생기면 롤백가능

Job

  • 일시적인 작업을 해야할 경우, 컨트롤러가 필요한 순간에 파드를 만들어서 해당 작업을 이행하고 삭제
  • 작업에만 자원이 할당되고 작업이 완료되면 자원을 수거함

Replication Controller, ReplicaSet

  • Replication Controller는 Deprecated여서 ReplicaSet으로 대체됨
  • Template과 Replicas 기능은 Replication Controller, ReplicaSet 공통 기능
  • Selector는 ReplicaSet에만 있음
  • 아직 Replication Controller를 많이 사용 중이나 ReplicaSet으로 업데이트 가능

Template

  • 컨트롤러와 파드는 셀렉터와 라벨로 연결 됨
  • 컨트롤러를 만들 때 템플릿으로 파드의 내용을 읽음
  • 컨트롤러가 파드를 재생성할 때 템플릿을 활용하여 파드 생성
  • 템플릿을 업데이트하고 기존의 파드를 다운시켜서 재생성하는 방식으로 파드 업데이트 가능

Sample YAML

  • 파드에 라벨이 있고, RepliactionController에 셀렉터가 있음
  • template에 파드의 내용이 들어가는데, 라벨이 지정되어 있음 --> 파드 재생성 시 컨트롤러와 연결시켜주는 역할

Replicas

  • replicas만큼 파드의 개수 관리
  • replicas = 1: 1개의 파드가 유지되도록 하며, 파드가 삭제되면 1개가 될 때까지 재생성함
  • replicas = 3: 3개의 파드가 유지되도록 하며, 파드가 삭제되면 3개가 될 때까지 재생성함
  • replicas = 1->3: 원래 1개인 파드가 3개로 늘어남 --> Scale Out, 반대는 Scale In
  • Replication과 Pod를 따로 만들지 않고, Replication 안에 template을 넣어, Replication만 생성할 수 있음
  • Replication안에 template이 있으면, Replication 생성 시 template을 사용하여 Pod 생성 --> 주로 이 방법을 사용

Sample YAML

Selector

  • ReplicaSet에만 있는 기능
  • Replication Controller는 키와 벨류가 같은 파드들만 연결됨
  • ReplicaSet은 matchLabels, matchExpressions가 있음
  • matchLabels: 키와 벨류가 모두 같아야 연결
  • matchExpressions: 키와 벨류에 대해 Operator로 선택 가능(Exists, In)

Operator

  • Exists: ReplicaSet의 키를 가지고 있는 파드를 연결시킴
  • DoesNotExist: ReplicaSet의 키를 가지고 있지 않은 파드를 연결시킴
  • In: ReplicaSet의 키를 가지고 있고, ReplicaSet의 벨류를 포함하고 있는 파드를 연결시킴
  • NotIn: ReplicaSet의 키를 가지고 있고, ReplicaSet의 벨류를 하나라도 갖고 있지 않은 파드를 연결시킴
  • 이러한 Operator는 다른 오브젝트에서도 많이 사용하니 알아두기!

Sample YAML

출처

인프런 - 대세는 쿠버네티스