You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 28 Next »


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

Pod을 정해진 수만큼 복제하고 관리하는 것이 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: 쿠버네티스 API버전을 가리킴

  • kind: 리소스 유형

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

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

    • template

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

    • 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


  • Labels and Selectors

    • Pod Discovery 기능: Label이 "type: front-end" 인 Pod만 Select

  selector:
    matchLabels:
      type: front-end
  • replicas

    • 유지할 Pod갯수
   replicas: 3 



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
$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

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

$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