[Kubernetes] Replica Set 작성

2023. 6. 27. 11:24기술 창고/Kubernetes

728x90
SMALL

이번에는 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 작성은 완료되었습니다.

 

728x90
반응형
LIST