쿠버네티스 Deployment와 ReplicaSet에 대해서
※주의
이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서
글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다.
공식문서가 더욱 더 큰 도움이 될 수 있습니다!
궁금점
디플로이먼트는 레플리카셋을 관리한다.
1. 디플로이먼트와 레플리카셋을 동시에 만들면 어떻게 될까?
2. 디플로이먼트도 레플리카셋을 만들어 파드를 관리하고 레플리카셋도 파드를 만들어서 관리를 하는데
그럼 굳이 디플로이먼트를 만들어야 하는 이유가 있을까? 그냥 레플리카셋을 만들어서 파드를 관리하면 되잖아.
예상
디플로이먼트와 레플리카셋은 거의 같은 개념? 이라고 봐도 무방하기 때문에
같이 바라본 pod에 대해 충돌이 일어나거나 오류가 생길 것 같다.
조건
동일한 컨테이너를 포함해야함.
Minikube에서 단일노드로 진행을 했다.
행동
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins-deployment
labels:
test: test1
spec:
replicas: 2
selector:
matchLabels:
test: test1
template:
metadata:
labels:
test: test1
spec:
containers:
- name: container-from-deployment
image: jenkins/jenkins:lts
ports:
- containerPort: 8080
name: jenkins
---
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: jenkins-replicaset
labels:
app: MyApp
spec:
replicas: 2
selector:
matchLabels:
test: test1
template:
metadata:
labels:
test: test1
spec:
containers:
- name: container-from-replicaset
image: jenkins/jenkins:lts
ports:
- containerPort: 8080
name: jenkins
결과
1. 디플로이먼트와 레플리카셋을 따로따로 생성한다.
디플로이먼트에서 생성한 레플리카셋에서 생성 된 파드 2개
그리고 레플리카셋에서 생성 된 파드 2개해서 총 4개의 파드가 돌아가는 것을 알 수 있습니다.
2.
레플리카셋
레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다. 레플리카셋의 �
kubernetes.io
특이한 점
조금 특이 했던건 pod의 이름 이었습니다.
디플로이먼트 -> 레플리카셋 -> 파드 순으로 생성이 되기 때문에
디플로이먼트 -> 레플리카셋에서 생성되는 이름 [DEPLOYMENT-NAME]-[RANDOM-STRING] 으로 생성이 되고
레플리카셋 -> 파드에서 생성되는 이름은 [REPLICASET-NAME]-[RANDOM-STRING] 으로 생성이 되기 때문에
[RANDOM-STRING]이 두 번 붙는 것을 볼 수 있습니다.
반면 레플리카셋은
레플리카셋 -> 파드 순으로 생성이 되기 때문에
[REPLICASET-NAME]-[RANDOM-STRING] 만 붙어 [RANDOM-STRING]이 한 번만 붙은 것을 알 수 있습니다.