Cloud/Kubernetes

Kubernetes) Kubernetes ReplicaSet

Adım Kim 2022. 10. 21. 02:04
학습 목표 : k8s의 서비스가 지속되도록하는 ReplicaSet에 대해 알아본다.

ReplicaSet 이란?

  • 쿠버네티스 프로젝트 초기부터 있던 Replication Controller의 발전형
  • 정해진 개수의 pod가 항상 실행상태가 되도록 관리한다.
  • 노드나 pod에 이상이생겨 사용할수 없을 때, 동일 cluster안의 다른 노드의 pod를 생성하고 실행한다.
  • YAML 파일을 통해 사용자가 요구하는 상태가 되도록 pod를 관리할 수 있다.


ReplicaSet 사용해보기

  • replicaset 설정 (replicaset-nginx.yaml)
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: replicaset-nginx           # name - replicaset 이름 설정
spec:
  replicas: 3                      # replicas - 유지할 파드개수를 설정하는 필드
  selector:                        # selector - 관리할 레이블의 파드를 선택
    matchLabels:                   # matchLabels - 레이블 체크 조건
      app: my-nginx-pods-label     # 탬플릿의 레이블 설정과 같게한다
  template:
    metadata:
      name: my-nginx-pod           # name - pod 이름 설정
      labels:                      # labels - 템플릿 레이블 설정
        app: my-nginx-pods-label
    spec:
      containers:
        - name: nginx              # name - 컨테이너 이름 설정
          image: nginx:1.20.0      # image - 컨테이너에 사용할 이미지
          ports:                   # ports - 컨테이너에 접속할 포트번호 설정
            - containerPorts: 80

 

  • replicaset 목록 확인
kubectl get replicasets

    -  replicaset 상태목록  설명

       DESIRED : replicaset 설정시 지정한 pod의 개수

       CURRENT : replicaset으로 동작하는 pod의 개수

 

  • replicaset 상세정보 확인
kubectl describe replicaset/replicaset-nginx
# kubectl describe replicaset/<ReplicaSet 이름>


ReplicaSet 와 Pod

  • pod는 레이블 기준으로 관리되고 replicaset 레이블을 지정하여 사용한다. replicaset 과 pod는 느슨하게 결합되어있다.
  • replicaset 설정으로 생성된 pod를 삭제하면  지정된 개수만큼 pod를 생성한다.
  • replicaset 설정으로 생성된 pod를 변경하면 변경된 pod를 제외하고 지정된 개수만큼 pod를 생성한다.
  • replicaset pod를 한꺼번에 삭제할 때
kubectl delete replicaset <ReplicaSet이름>
  • replicaset의 컨트롤러만 삭제하고 pod를 유지할 때
kubectl delete replicaset <Replicaset 이름> --cascade=orphan