Cloud Architect 꿈꾸기

Cloud Computing/Kubernetes

Kubernetes - Replication Controller, ReplicaSet

HwanJae 2021. 1. 18. 15:28

Kubernetes의 Controller와 ReplicaSet에 대해 살펴보겠다.

먼저 Controller는 다음과 같은 기능을 수행할 수 있는데,

 

  • Auto Healing

Controller가 장애를 즉각적으로 인지하고 다른 노드에 Pod를 만들어준다.

 

  • Auto Scaling

Pod가 죽지 않도록 부하분산을 시키는 역할을 수행해준다.

 

  • Software Update

여러 Pod에 대한 버전을 업그레이드 해야할 경우, Controller를 통해 한번에 업그레이드가 가능하고, 도중에 문제가 생기면 롤백이 가능하도록 지원해준다.

 

  • Job

일시적인 작업을 해야할 경우, Controller가 필요한 순간에만 Pod를 만들어 해당 작업을 이행하고 삭제시킨다. 필요한 순간에만 자원이 사용되고 작업 후에는 반환되기 때문에 효율적인 자원 활용을 가능하게 한다.

 

이러한 기능을 제공해주는 ReplicaSet과 Replication Controller에 대해 조금 자세히 알아보려한다.


Replication Controller

Replication Controller는 먼저 현재 Deprecate된 오브젝트로 최근에는 ReplicaSet를 사용한다고 한다.

그러나 아직까지 Replication Controller를 사용하는 곳이 있기에 알아보기로 한다.

Replication Controller는 삭제 시 내부 파드도 전부 삭제되기 때문에 주의가 필요하다.

 

Template

Controller와 Pod는 Labels와 Selector로 연결된다. Controller를 만들 때 template로 Pod의 내용을 입력하는데, Pod가 다운될 경우 template 안의 Pod 내용을 이용해 새로운 Pod를 생성해주게 된다.

template의 내용을 업데이트 후 Pod를 삭제할 경우에는 업데이트 된 내용의 Pod로 자동 생성이 된다.

Replicas

Controller 내부에서는 설정한 Replicas 만큼 Pod의 개수가 관리된다. 또한 Pod가 삭제되면 해당 Replicas 수만큼 Pod가 생성되며 Scale Out이 된다.

Replicas와 template를 만들면 template의 내용을 가지고 Replicas 수만큼 Pod를 만들어줄 수 있다.


ReplicaSet

ReplicaSet은 기본적으로 Template와 Replicas를 모두 지원하며, 추가로 Selector를 지원한다.

Selector

Selector는 ReplicaSet에만 있는 기능으로,

먼저 Replication Controller를 작성 시 Selector로는 Key와 Value를 똑같이 설정해주어야 Pod가 생성되고 연결이 가능하다.

반면 ReplicaSet에는 matchExpressions라는 Operator를 통해 Key와 Value의 옵션을 세부적으로 다룰 수 있다.

아래 네 가지의 옵션을 소개한다.

  • Exists

Key를 정하고 그에 상응하는 Value를 가진 Pod만 연결해준다.

  • DoesNotExist

정해진 Key에 해당하는 Value를 가지지 않은 Pod만 선택한다.

  • In

해당하는 Key를 가진 Pod중에 ReplicaSet에 설정한 Value와 매칭되는 Pod만 선택한다.

  • NotIn

해당하는 Key를 가진 Pod중에 ReplicaSet에 설정한 Value와 매칭되지 않는 Pod만 선택한다.

 

참고로 Selector의 모든 내용은 Pod가 작성되는 Labels의 내용에 포함되어야 하며, Labels에 적혀있지 않은 값을 옵션으로 줄 경우 생성되지 않는다.