Replicaset이란 실행되는 Pod의 개수를 보증해주는 역할을 합니다.
예를 들어서 Replicaset을 3개로 지정한 경우 Pod 1개가 어떠한 이유로 중지되어도 다시 실행이 되어 3개를 맞추게 해줍니다.
바로 예제 코드를 보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: webapp
spec:
selector:
matchLabels:
app: webapp
replicas: 2
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: <some image>
|
cs |
코드를 살펴보면 우선 당연히 ReplicaSet에 맞게 kind도 맞춰줍니다.
그리고 spec/replicas에서 원하는 만큼의 개수를 정해줍니다.
중요한 곳은 template 부분입니다. nested한 구조로 되어있는 것을 볼 수 있는데 template에서 설정한 pod이 ReplicaSet에 의해 관리되는 pod입니다.
위 코드에서는 template에 의해 정의된 pod이 2개로 유지됩니다.
service에서 pod을 지정할 때 selector에 label을 맞춰서 지정한 것처럼 ReplicaSet에서도 selector를 지정해주어야 합니다.
templates안에 있는 labels와 Replicaset의 matchLabels 부분을 맞춰줍니다.
template/metadata 부분을 보면 name 부분은 없는걸 볼 수 있는데 해당 pod은 어차피 ReplicaSet에 의해 관리될 것이기 때문에 굳이 name을 정해줄 필요는 없습니다.
이러한 yaml 파일을 작성하고 kubectl apply -f 명령어를 통해 실행해봅니다.
그리고 kubeclt get all 명령어를 실행합니다.
여러 정보가 나오는데 하나하나 살펴보면 위 그림은 현재 실행되고 있는 pod의 개수(CURRENT), 준비중인 pod의 개수(READY)를 나타냅니다.
위 그림은 실행되고 있는 pod의 정보입니다.
Replica를 2로 지정했기 때문에 2개의 pod이 생성되며 지정한 이름 뒤에 랜덤 숫자 또는 영문으로 suffix가 붙게 됩니다.
Replicaset이 정말 지정한 replica만큼을 유지해주는지를 확인해보고 싶으면 kubectl delete 명령어를 실행 후에
kubectl get all 명령어를 실행해보면 삭제한 pod말고 새로운 pod이 다시 생성되는걸 확인할 수 있습니다.
'k8s' 카테고리의 다른 글
k8s #5 networking&namespace (0) | 2021.11.24 |
---|---|
k8s #4 Deployment&Rollout (0) | 2021.11.23 |
k8s #2 무중단 배포 기초 (0) | 2021.11.22 |
k8s #1 hello world (0) | 2021.11.22 |