Kubernetes/Udemy - CKAD with Tests

ReplicaSet

비번변경 2021. 7. 2. 01:20

Kubernetes Controller

쿠버네티스 개체를 모니터링하고, 적절하게 응답한다.

 

Replication Controller

애플리케이션의 고가용성을 보장하기 위해 지정된 수의 포드를 클러스터 내에 실행할 수 있도록 한다.

단일 포드를 사용하더라도 기존 포드에 장애가 발생하는 경우 새 포드를 자동으로 동작시키기 위해 사용할 수 있다.

애플리케이션의 사용자가 증가하는 경우 부하를 공유할 여러 포드를 생성할 수 있다.

클러스터 내 여러 노드에 걸쳐 있다.

ReplicaSet에 의해 대체된 기술이다.

 

생성 방법

정의 파일을 생성한 뒤 kubectl create 명령어로 생성한다.

apiVersion: v1
kind: ReplicationController
metadata:
  name: myapp-rc
  labels:
    app: myapp
    type: front-end
spec:
  template:
    # pod 정의 파일의 메타데이터부분부터 옮기면 됨
    metadata:
      name: myapp-pod
      labels:
        app: myapp
        type: front-end
      spec:
        container:
          - name: nginx-container
            image: nginx
  # 복제본 수
  replicas: 3

spec 부분은 생성 개체 내의 항목을 정의하며, Replication Controller가 Replication 생성에 사용할 포드 템플릿은 포드 정의 파일과 유사하게 작성한다.

 

명령어

kubectl create -f rc-defintion.yml

# 생성한 복제 컨트롤러 확인
kubectl get replicationcontroller

kubectl get pods

 

ReplicaSet

정의 파일을 생성한 뒤 kubectl create 명령어로 생성한다.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp-replicaset
  labels:
    app: myapp
    type: front-end
spec:
  template:
    # pod 정의 파일의 메타데이터부분부터 옮기면 됨
    metadata:
      name: myapp-pod
      labels:
        app: myapp
        type: front-end
      spec:
        container:
          - name: nginx-container
            image: nginx
  replicas: 3
  selector:
    matchLabels:
      tier: front-end

selector는 Replication Controller와의 차이점으로, ReplicaSet가 모니터링할 포드를 식별하는데 필요하다. 

 

명령어

# 생성
kubectl create -f rs-definition.yaml

# 조회
kubectl get replicaset

kubectl get pods

# 삭제
kubectl delete replicaset myapp-replicaset

 

스케일 업/다운 방법

1. yaml 파일 수정 후 replace 명령어 실행

kubectl replcae -f rs-definition.yaml 

2. scale 명령어 실행

kubectl scale --replicas=6 -f rs-definition.yaml 

파일 지정 시 파일 내용이 자동으로 갱신되는 것은 아니다.