2023. 6. 27. 11:24ㆍ기술 창고/Kubernetes
이번에는 Replica Set을 작성하는 방법을 알아보겠습니다.
nano {pod yml 파일명} 명령어를 입력하여 pod 편집기로 들어옵니다.
작업을 하기 이전에 yml 파일의 편의성에 대해 잠깐 짚고 가자면,
yml 파일 안에 여러 Pod들에 대한 내용을 전부 넣어 한번에 관리할 수 있습니다.
Service.yml 의 경우에도 여러 Service들을 전부 넣어 한번에 관리할 수 있습니다.
다만 1000개 이상의 대량의 yml 내용들을 관리하게 된다면 비효율적이기 때문에 이렇게 대량의 경우에는 따로 분리하여 관리해야 합니다.
Replica Set를 사용하여 기존의 Pod 를 업그레이드 시켜보겠습니다.
기존에 존재했던 webapp release0 버전을 삭제 후 진행하겠습니다.
release0-5 버전의 Pod 내용에서 약간 씩만 변경해주면 됩니다.
- apiVersion: apps/v1
Replica Set 은 api 버전이 apps/v1입니다.
- kind: ReplicaSet
용도는 Pod에서 ReplicaSet로 변경합니다.
- metadata:
name: webapp-replicaset
메타 데이터에서 이름을 webapp-replicaset 로 지정해주었습니다.
- spec:
replicas: 1
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: {실행시킬 image}
Replica Set의 spec을 설정해줍니다.
replicas: 1 = 실행될 Pod 들의 수를 임의로 1로 지정했습니다. 만약 3으로 지정했으면 Pod 3개가 같이 실행됩니다.
template: ~ = Replica 안에 Pod들이 존재하는데 그 Pod의 yml 작성 설정 정보들을 그대로 넣으면 됩니다. 다만 메타데이터 항목의 name 부분은 넣지 않아도 되니 빼주었고, labels 도 하나만 있으면 되니 release: 0-5 도 지워주었습니다.
service 에도 들어가서 selector에 Pod와 동일하게 release: 0-5 내역을 지워줍니다.
이제 kubectl apply -f {pod 명} 명령어를 입력하여 생성하려고 하면 에러가 발생되게 됩니다.
원인은 selector 블록이 없기 때문입니다.
이 selector 블록은 기존의 service가 가지고 있던 selector와 똑같습니다.
즉, Replica Set 안에서 Pod들과 Service의 특징을 모두 갖고 있다고 보면 될 것입니다.
다시 pods.yml 로 들어가줍니다.
ReplicaSet의 spec에 selector 블록을 추가해줍니다.
Service 처럼 label에 매칭이 되게끔 해주기 위해 matchLabels 항목과 Pod의 label을 적어주면 됩니다.
저의 경우에는 app: webapp 입니다.
그 후에 다시 kubectl apply -f {pod 명}, kubectl apply -f {service 명} 명령어들을 입력하여 작성을 완료하고 반영해줍니다.
이제 Replica Set 작성은 완료되었습니다.
'기술 창고 > Kubernetes' 카테고리의 다른 글
[Kubernetes] 쿠버네티스 Deployment (배포) (0) | 2023.06.27 |
---|---|
[Kubernetes] 쿠버네티스에 Replica Set 적용 / 크래시 후 안정적인 운용에 대해 (0) | 2023.06.27 |
[Kubernetes] Replica Sets (레플리카 세트) (0) | 2023.06.27 |
[Kubernetes] 명령어 모음 (0) | 2023.06.27 |
[Kubernetes] Pod Label 을 활용한 가동 중지 시간 없이 간단하게 배포하는 방법 (0) | 2023.06.26 |