*유데미에서 진행하는 Kubernetes for the Absolute Beginners - Hands-on 강의를 바탕으로 제작되었습니다.
ReplicaSet 파일은 다음과 같습니다.
# replicaset.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-replicaset
labels:
app: myapp
spec:
selector:
matchLabels:
app: myapp # app: myapp의 라벨을 가짐
replicas: 3
template:
metadata:
name: nginx-2
labels:
app: myapp # selector와 동일한 라벨을 가짐
spec:
containers:
- name: nginx
image: nginx
spec 속성 아래에 있는 selector.matchLabels와 template에 있는 metadata.labels는 동일해야 합니다
yaml 파일 이용해서 레플리카셋 생성
kubectl create -f replicaset.yaml
# 실행 중인 레플리카셋 확인 명령어
kubectl get replicaset
>>
NAME DESIRED CURRENT READY AGE
myapp-replicaset 3 3 3 11s
지정해둔 이름이 myapp-replicaset이었으니 그에 맞게 출력되었습니다
같은 labels를 가진 다른 pod을 실행하면 어떻게 될까?
앞선 포스팅에서 ReplicaSet은 selector에 있는 labels와 template에 있는 labels를 동일하게 해줘 감시해야할 파드가 무엇인지 확인한다고 했습니다. replicas는 3으로 설정했는데 별도의 yaml 파일에서 같은 labels를 가진 파드를 생성하려고 하면 어떻게 되는지 확인해 보겠습니다.
# nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-2
labels:
app: myapp # 동일한 labels를 가짐
spec:
containers:
- name: nginx
image: nginx
# 같은 라벨을 가진 개별 pod 실행
kubectl create -f nginx.yaml
>>
pod/nginx-2 created
kubectl get pods
>>
NAME READY STATUS RESTARTS AGE
myapp-replicaset-ls4xr 1/1 Running 0 113m
myapp-replicaset-vnctk 1/1 Running 0 113m
myapp-replicaset-zsx6k 1/1 Running 0 113m
개별 pod가 생성되지 않았습니다.
같은 라벨을 가진 pod의 수가 지정한 설정(replicas=3)를 넘어서려고 하기 때문에 ReplicaSet이 생성을 막은 것입니다.
그러면 생성되어 있는 ReplicaSet을 수정하여 pod의 개수를 4개로 변경해 보겠습니다
kubectl edit replicaset myapp-replicaset
>>
spec: 속성 아래에 있는 replicas=4로 변경
edit명령어 입력 후 저는 vim 편집기로 실행되었는데 수정 후 텍스트 에디터를 종료하면 바로 적용이 됩니다.
kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-replicaset-ls4xr 1/1 Running 0 126m
myapp-replicaset-r4hf7 1/1 Running 0 5s
myapp-replicaset-vnctk 1/1 Running 0 126m
myapp-replicaset-zsx6k 1/1 Running 0 126m
두 번째 파드가 5초전 생성인 것이 보이시나요?
단, edit 명령어는 지금 실행 중인 ReplicaSet을 수정한 것이기 때문에 후에 다시 ReplicaSet을 만들고 싶은 경우 yaml 파일도 맞게 수정해 주어야 합니다
replicas를 변경하는 다른 방법으로는 scale 명령어를 사용하는 방법이 있습니다
kubectl scale replicaset myapp-replicaset --replicas=2
>>
replicaset.apps/myapp-replicaset scaled
위와 같이 scale replicaset이라고 적어 레플리카셋을 조정하겠다고 입력해줍니다
kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-replicaset-ls4xr 1/1 Running 0 136m
myapp-replicaset-zsx6k 1/1 Running 0 136m
4개 였던 pod가 2개로 줄어들고 자동으로 삭제되는 것을 확인할 수 있습니다
기존의 레플리카 셋을 수정하는 방법(= edit)명령어를 사용하는 방법을 선택했을때 image를 변경했다면 기존의 pod를 모두 지워주면 새로운 이미지로 적용됩니다.
# 모든 파드 삭제
kubectl delete pods --all
이러면 기존 image를 가진 파드들이 모두 지워지고 새로운 이미지를 가진 파드들로 교체됩니다
'[Cloud] > [Kubernetes]' 카테고리의 다른 글
[Kubernetes] 쿠버네티스 업데이트 & 롤백 (0) | 2024.05.24 |
---|---|
[Kubernetes] deployment 기본 (0) | 2024.05.24 |
[Kubernetes] 쿠버네티스 ReplicaSet (0) | 2024.05.22 |
[Kubernetes] 쿠버네티스 pod-definition 기본 형식 (0) | 2024.05.22 |
[Kubernetes] VSCODE Kubernetes YAML 확장 프로그램 설치 및 설정 (0) | 2024.05.22 |