Program Language/K8S

CKA 자격증 - Certified Kubernetes Administrator 2편 [ReplicaSets]

QueryJun 2023. 8. 9. 18:35

ReplicaSet 이란?

레플리카셋(ReplicaSet)은 쿠버네티스에서 사용되는 리소스 중 하나로, 특정 수의 동일한 Pod 복제본을 유지하도록 보장하는 역할을 하는 컨트롤러입니다. ReplicaSet은 Pod의 고가용성(high availability)과 확장성(Scalability)을 관리하기 위해 사용되며,

Pod 복제본을 지속적으로 모니터링하고 필요에 따라 파드를 생성하거나 삭제하여 원하는 복제본 수를 유지합니다.

 

1. 쿠버네티스 레플리카셋(ReplicaSet)의 YAML 파일

  • apiVersion: ReplicaSet의 API 버전을 지정합니다. 여기서는 apps/v1을 사용합니다.
  • kind: 리소스의 종류를 지정합니다. ReplicaSet을 생성하므로 ReplicaSet을 사용합니다.
  • metadata: ReplicaSet의 메타데이터 정보를 지정합니다.
    • name: ReplicaSet의 이름을 설정합니다.
  • spec: ReplicaSet의 스펙(구성)을 지정합니다.
    • replicas: 원하는 복제본 수를 설정합니다.
    • selector: ReplicaSet이 관리하는 파드들을 선택하는 라벨 셀렉터를 지정합니다.
      • matchLabels: 라벨을 사용하여 선택합니다.
    • template: ReplicaSet이 생성하는 Pod 템플릿을 지정합니다.
      • metadata: Pod의 메타데이터 정보를 설정합니다.
        • labels: Pod에 라벨을 부여하여 식별하기 쉽게 합니다.
      • spec: Pod의 스펙(구성)을 지정합니다.
        • containers: Pod 안에 실행할 컨테이너들의 목록입니다. 컨테이너 관련 설정은 Pod와 동일합니다.

 

2. ReplicaSet 정보 출력

$ kubectl get replicaset
$ kubectl get replicasets
$ kubectl get rs

# 모두 동일한 결과 출력

해당 명령을 실행하면 클러스터 내의 모든 Replicaset의 요약 정보가 표시됩니다. 각 레플리카셋의 이름, 원하는 복제본 수, 현재 실행 중인 Pod 수 등을 확인할 수 있습니다.

  • NAME: Replicaset의 이름입니다.
  • DESIRED: Replicaset이 유지하려는 원하는 복제본 수입니다.
  • CURRENT: 현재 실행 중인 Pod의 복제본 수입니다.
  • READY: 실행 중인 파드 중에서 레디 상태인 Pod의 수입니다.
  • AGE: Replicaset이 생성된 후 경과한 시간을 나타냅니다.

3. Replicaset의 자세한 정보를 출력

$ kubectl describe rs <replicaset-name>

해당 명령을 사용하면 해당 Replicaset의 상세 정보, 관련 이벤트, 라벨, pod 상태 등을 확인할 수 있습니다.

 

4. 지정된 경로에 있는 yaml 파일을 이용하여 Replicaset 생성

$ kubectl create -f /root/replicaset-definition-1.yaml

해당 명령은 지정된 경로에 있는 YAML 파일을 사용하여 쿠버네티스 클러스터에 레플리카셋(ReplicaSet)을 생성하는 명령입니다.

 

5. 지정된 경로에 있는 yaml 파일을 이용하여 Replicaset 업데이트

$ kubectl apply -f /root/replicaset-definition-2.yaml

해당 명령은 지정된 경로에 있는 YAML 파일을 사용하여 쿠버네티스 클러스터에 새로운 ReplicaSet을 업데이트 합니다.

 

 

kubectl apply와 create 차이!

  1. 리소스 중복성 처리:
    • kubectl create: 리소스를 생성할 때, 동일한 이름의 리소스가 이미 존재하면 에러를 발생시킵니다. 따라서 같은 이름을 가진 리소스를 덮어쓰지 않도록 유의해야 합니다.
    • kubectl apply: 리소스를 생성하거나 업데이트할 때, 이미 존재하는 리소스를 업데이트하거나 새로 생성합니다. 따라서 이미 존재하는 리소스를 업데이트할 수 있고, 없는 리소스는 새로 생성됩니다.
  2. 설정 변경 및 롤백:
    • kubectl create: 이미 생성된 리소스를 변경하거나 업데이트하는 데는 적합하지 않습니다. 변경하려면 기존 리소스를 삭제하고 다시 생성해야 합니다.
    • kubectl apply: 이미 생성된 리소스를 변경하거나 업데이트하는 데 적합합니다. 변경된 설정을 적용하고, 필요한 경우 변경 사항을 롤백할 수 있습니다.
  3. 디플로이먼트와 관련성:
    • kubectl create: 디플로이먼트를 생성하는 데에는 적합하지 않습니다. 디플로이먼트는 레플리카셋과 파드 템플릿을 추상화하여 롤링 업데이트 등을 지원하는데, kubectl create는 디플로이먼트의 기능을 완전히 지원하지 않을 수 있습니다.
    • kubectl apply: 디플로이먼트를 생성하고 업데이트하는 데에 적합합니다. 디플로이먼트를 관리하며 롤링 업데이트나 롤백 등을 수행할 때 사용됩니다

6. Replicaset YAML 정의 수정

$ kubectl edit replicaset <replicaset_name>

해당 명령을 실행하면 쿠버네티스 클러스터 내의 에디터가 열리고, 해당 레플리카셋의 YAML 정의가 편집됩니다.

 

감사합니다.

반응형