Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Info

Pod을 단독으로 만들면 Pod에 어떤 문제(서버가 죽어서 Pod이 사라졌다던가)가 생겼을 때 자동으로 복구되지 않습니다.

Pod을 정해진 수만큼 복제하고 관리하는 것이 ReplicaSet입니다.

ReplicaSet Manifests

iconfalse
title목차

Table of Contents

ReplicaSet 개요

Info
iconfalse
Info

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

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

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

Image Added

Image Added 


ReplicaSet Manifests

Info
iconfalse
Info

 

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

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

  • kind: 리소스   ReplicaSet. #리소스 유형

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

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

    • template (PodTemplateSpec)         # Pods 명세

      • metadata
        • name
        • labels
      • spec
        • containers
        • volumes
    • selector

    • selector     #labeling된 Pod선택

    • replicas      #복제본 수replicas
  • status(ReplicaSetStatus) : 포드의 상태, 각 컨테이너의 설명 및 상태, 포드 내부의 IP 및 그밖의 기본 정보 등
Code Block
titlenginx-rs.yaml
linenumberstrue
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 실습

Labels and Selectors
Info
iconfalse
  • Pod Discovery 기능: Label이 "type: front-end" 인 Pod만 Select

Code Block
linenumberstrue
Code Block
  selector:
    matchLabels:
      type: front-end
  • replicas

    • 유지할 Pod갯수
Code Block
   replicas: 3 
Code Block
sansae@sansaeAir15m2 ~ % k apply -f nginx-rs.yaml
replicaset.apps/nginx-rs created
Code Block
linenumberstrue
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

Code Block
linenumberstrue
$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

자가치유

Code Block
linenumberstrue
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

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

Info
iconfalse
Code Block
linenumberstrue
$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