목차

ReplicaSet 개요

ReplicaSet은 애플리케이션에 대하여 지정된 수의 동일한 복사본(복제본)이 항상 실행되도록 보장합니다. 

이는 애플리케이션의 일부가 실패하더라도 애플리케이션의 가용성과 안정성을 유지해 줍니다.

https://velog.io/@salgu1998/Kubernetes-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-ReplicaSet

 


ReplicaSet Manifests

 https://dev-k8sref-io.web.app/docs/workloads/replicaset-v1/

  • apiVersion: apps/v1    #쿠버네티스 API버전을 가리킴

  • kind:  ReplicaSet. #리소스 유형

  • metadata (ObjectMeta): 포드와 관련된 이름, 네임스페이스, 라벨, 그밖의 정보

    • namespace
    • name
    • labels
  • spec (ReplicaSetSpec): PodTemplate

    • template (PodTemplateSpec)         # Pods 명세

      • metadata
        • name
        • labels
      • spec
        • containers
        • volumes
    • selector     #labeling된 Pod선택

    • replicas      #복제본 수
  • status(ReplicaSetStatus) : 포드의 상태, 각 컨테이너의 설명 및 상태, 포드 내부의 IP 및 그밖의 기본 정보 등
nginx-rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-rs
  labels:
    app: myapp-rs
    type: front-end
spec:
  template:
    metadata:
      name: nginx
      labels:
        app: myapp
        type: front-end
    spec:
      containers:
        - name: nginx
          image: nginx:1.14.2
          ports:
            - containerPort: 80
  selector:
    matchLabels:
      type: front-end
  replicas: 3


ReplicaSet 실습

sansae@sansaeAir15m2 ~ % k apply -f nginx-rs.yaml
replicaset.apps/nginx-rs created
sansae@sansaeAir15m2 ~ % k get all
NAME                 READY   STATUS    RESTARTS   AGE
pod/nginx-rs-6dzx9   1/1     Running   0          91s
pod/nginx-rs-kbkn8   1/1     Running   0          91s
pod/nginx-rs-ml42r   1/1     Running   0          91s

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP   6h13m

NAME                       DESIRED   CURRENT   READY   AGE

Scale

$k replace -f nginx-rs.yaml     #replicas를 수정후
$k scale --replicas=6 -f nginx-rs.yaml
$k scale --replicas=6 rs nginx-rs

sansae@sansaeAir15m2 ~ % k scale --replicas=6 rs nginx-rs 
replicaset.apps/nginx-rs scaled
sansae@sansaeAir15m2 ~ % k get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-6dzx9   1/1     Running   0          15m
nginx-rs-7mrz2   1/1     Running   0          9s
nginx-rs-hm85w   1/1     Running   0          9s
nginx-rs-kbkn8   1/1     Running   0          15m
nginx-rs-ml42r   1/1     Running   0          15m
nginx-rs-shljn   1/1     Running   0          9s

자가치유

sansae@sansaeAir15m2 ~ % k get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-4ksww   1/1     Running   0          10s
nginx-rs-5995j   1/1     Running   0          10s
nginx-rs-7lhv5   1/1     Running   0          10s
nginx-rs-8j45p   1/1     Running   0          10s
nginx-rs-lvh56   1/1     Running   0          10s
nginx-rs-wrhnv   1/1     Running   0          10s

sansae@sansaeAir15m2 ~ % k delete pod nginx-rs-wrhnv
pod "nginx-rs-wrhnv" deleted

sansae@sansaeAir15m2 ~ % k get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-4ksww   1/1     Running   0          31s
nginx-rs-5995j   1/1     Running   0          31s
nginx-rs-6q445   1/1     Running   0          5s
nginx-rs-7lhv5   1/1     Running   0          31s
nginx-rs-8j45p   1/1     Running   0          31s
nginx-rs-lvh56   1/1     Running   0          31s

컨테이너 이미지 버전이 변경되었다면?

$k edit rs nginx-rs
-> image: nginx:1.14.2 --> nginx:15.12


replicaset.apps/nginx-rs edited
  • 명세는 수정되지만 실제 Pod가 변경되지는 않습니다.
    이미지 버전을 변경하기 위해서는 삭제 후 재생성해야 합니다.
    k delete -f nginx-rs.yaml
    k apply -f nginx-rs.yaml



  • No labels
Write a comment…