로컬에서는 잘 되는데 ☘️

ReplicaSet의 3가지 기능

by youngjun._.

Replication Controller와 ReplicaSet의 차이점?

Replication Controller 현재 Deprecated된 Object다.

이를 대체로 사용하는 것이 ReplicaSet이다.

 

Replication Controller를 아직 사용하는 것이 있어 비교해서 알아두려고 한다.

Replication Controller ReplicaSet으로 변환할 수 있음!
(실습때 Test 해보기로 하자)

 

ReplicaSet의 3가지 기능

  • Template
  • Replicas
  • Selector

Template와 Replicas기능은 Replication Controller에서도 제공한다.

Selector라는 기능이 ReplicaSet에 추가됨!

 

Template

Pod가 다운될 것을 대비해 새로만들 pod의 내용을 template으로 만들어 놓는다!

 

(1) Replication controller와 pod 연결 방법

controller와 pod는 service와 pod처럼 Label과 selector로 연결 됨!

(Label이 붙어있는 Pod에 selector를 매칭시키는 Controller가 있으면 연결 된다)

label로 연결되는 controller와 pod

(2) Template 설정 방법

Controller를 만들 때 template으로 pod의 내용을 넣게 됨

Controller는 Pod가 죽을 때 재생성 주는데 이 때 필요한 것이 Template 기능

앞에서 만든 Pod가 죽었을 경우 내부의 template으로 pod를 새로 생성하게 됨!

 

 

 

(3) Template으로 Update하는 로직

Version 업그레이드 방법

  1. template에 v2에 대한 pod를 update한다.
  2. 기존에 연결되어있는 pod를 다운시킨다.
  3. pod 새로 만들 때 template에 업데이트 된 v2 기반으로 재생성한다.

이러한 특성을 사용해 App에 대한 업그레이드를 할 수 있음

 

(4) yaml 파일

 

Template 설정하는 yaml 파일 내용

  1. Pod의 label 내용과 Selector의 label 내용을 동일하게 설정한다(연결하기 위해)
  2. template의 pod에도 label을 똑같이 설정해준다(그래야 controller에 연결 된다!)

 

Replicas

replicas만큼 pod의 개수가 관리 됨!

 

  • replicas = 1인 경우 : pod가 삭제되면 하나의 pod만 재생성함
  • 만약 replicas를 3으로 늘리면 pod가 늘어나면서 Scale out됨(pod도 3개로 유지!)

replicas 설정으로 scale out

  • 수치를 늘리면 Scale Out
  • 수치를 줄이면 Scale In

 

Template과 Replicas기능을 동시에 사용할 수 있음!

pod없이 controller를 아래 그림과 같이 설정해주면
(1) controller에서 replicas가 2로 할당되어 있는 것을 확인
(2) template에서 설정된 pod를 2개 자동으로 생성함!

이 기능을 활용해서 실제로 controller를 사용할 때
controller에 대한 정의만 잘 해주면 pod 생성이 된다는 의미이다!

replicas + template 활용

 

 

 

Selector

위에 Template과 Replicas는 replication controller에서도 제공하는 기능이였음.
Selector는 ReplicaSet에서만 제공되는 기능이다!

 

(1) 기존 방식(label 매칭)

replication controller에 selector는 key와 label이 같은 pod와 연결했음!

key와 value 중 하나라도 다르면 연결해주지 않았다.

 

Replication controller에서는 다른 label 연결 안 됨

(2) ReplicaSet의 기능

2가지 추가적인 속성이 있음

  • matchLabels
  • matchExpressions

matchLabels
기존 방식 그대로 replication controller의 기능 (key-value 일치시 연결)

기존 방식과 마찬가지로 key-value 매칭 시 연결

matchExpressions

key-value를 디테일하게 컨트롤할 수 있다!

matchExpression 기능을 활용한 pod 연결

key 값을 설정하고 operator를 exists로 놓게 되면 value가 달라도 pod에 연결할 수 있다

 

selector에 matchLabel와 matchExpressions

 

(3) yaml 파일

ReplicaSet의 yaml 설정

matchLabels는 key-value 형식으로 설정하고

matchExpressions에는 key를 지정해주고 operator에 여러 추가 옵션을 설정할 수 있다.

 

(4) matchExpressions에 operator 옵션

  • Exists
  • DoesNotExist
  • In
  • NotIn

총 4개의 옵션이 있다.

matchExpressions의 Selector operator 옵션 네가지 구분

Exists

Key에 맞는 label의 pod를 연결

 

DoesNotExist

Key와 다른 label의 pod를 연결

 

In

Key와 Values를 지정할 수 있음!

Key와 Value가 일치하는 Pod만 연결

 

NotIn

Key는 일치하고 Value는 일치하지 않는 Pod에 연결

 

위와 같이 selector는 다양하게 pod를 선택할 수 있는 옵션을 제공한다.
다른 Object에서 많이 활용되니 알아두는게 좋음!

 

블로그의 정보

개발하는만두

youngjun._.

활동하기