Kubernetes Replicaset

jaeyeon ha·2026년 3월 7일

[교육] Kubernetes

목록 보기
17/34

레플리카셋

레플리케이션 컨트롤러에 조건부 셀렉터 추가

  • 조건부 셀렉터 :: 정교하게 탐색할 수 있도록 조건부로 그룹화
    제공 연산자 Exists / DoesNotExist / In / NotIn
[root@master ~/kube/07/rs]# kubectl api-resources | grep replicasets
replicasets                       rs           apps/v1                                true         ReplicaSet
[root@master ~/kube/07/rs]# vi nginx-rs.yaml
[root@master ~/kube/07/rs]# cat nginx-rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-rs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
[root@master ~/kube/07/rs]# kubectl apply -f nginx-rs.yaml
replicaset.apps/nginx-rs created
[root@master ~/kube/07/rs]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-dkb59   1/1     Running   0          4s
nginx-rs-nxdxg   1/1     Running   0          4s
nginx-rs-tgkjg   1/1     Running   0          4s
[root@master ~/kube/07/rs]# kubectl get rs
NAME       DESIRED   CURRENT   READY   AGE
nginx-rs   3         3         3       8s
[root@master ~/kube/07/rs]# kubectl describe rs nginx-rs
Name:         nginx-rs
Namespace:    default
Selector:     app=webui
Labels:       <none>
Annotations:  <none>
Replicas:     3 current / 3 desired
Pods Status:  3 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:  app=webui
  Containers:
   nginx-container:
    Image:        nginx:1.14
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Events:
  Type    Reason            Age   From                   Message
  ----    ------            ----  ----                   -------
  Normal  SuccessfulCreate  27s   replicaset-controller  Created pod: nginx-rs-nxdxg
  Normal  SuccessfulCreate  27s   replicaset-controller  Created pod: nginx-rs-dkb59
  Normal  SuccessfulCreate  27s   replicaset-controller  Created pod: nginx-rs-tgkjg

설정한 replicas 수를 유지 테스트

[root@master ~/kube/07/rs]# kubectl scale rs nginx-rs --replicas=4
replicaset.apps/nginx-rs scaled
[root@master ~/kube/07/rs]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-dkb59   1/1     Running   0          2m24s
nginx-rs-k7bmb   1/1     Running   0          3s
nginx-rs-nxdxg   1/1     Running   0          2m24s
nginx-rs-tgkjg   1/1     Running   0          2m24s
[root@master ~/kube/07/rs]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-dkb59   1/1     Running   0          2m36s
nginx-rs-tgkjg   1/1     Running   0          2m36s
[root@master ~/kube/07/rs]# kubectl delete pod nginx-rs-dkb59
pod "nginx-rs-dkb59" deleted
[root@master ~/kube/07/rs]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-tgkjg   1/1     Running   0          3m26s
nginx-rs-tmtfq   1/1     Running   0          4s

롤링 업데이트/롤백 테스트
※ ReplicaSet도 롤링 업데이트/롤백을 지원하지 않음
container 이미지 nginx:1.14 → nginx:1.15로 변경

[root@master ~/kube/07/rs]# kubectl edit rs nginx-rs
replicaset.apps/nginx-rs edited
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
    Image:          nginx:1.14
    Image ID:       docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
    Image:          nginx:1.14
    Image ID:       docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d

ReplicationController와 마찬가지로 새로 구동될 때 변경사항 적용

[root@master ~/kube/07/rs]# kubectl delete pod nginx-rs-tgkjg
pod "nginx-rs-tgkjg" deleted
[root@master ~/kube/07/rs]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-tmtfq   1/1     Running   0          2m2s
nginx-rs-vdn9p   1/1     Running   0          4s
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
    Image:          nginx:1.14
    Image ID:       docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
    Image:          nginx:1.15
    Image ID:       docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
[root@master ~/kube/07/rs]# kubectl delete pod --all
pod "nginx-rs-tmtfq" deleted
pod "nginx-rs-vdn9p" deleted
[root@master ~/kube/07/rs]# kubectl get pod
NAME             READY   STATUS              RESTARTS   AGE
nginx-rs-nt6np   0/1     ContainerCreating   0          3s
nginx-rs-w6jpg   1/1     Running             0          3s
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
    Image:          nginx:1.15
    Image ID:       docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
    Image:          nginx:1.15
    Image ID:       docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68

[root@master ~/kube/07/rs]# kubectl set image replicasets/nginx-rs nginx-container=nginx:1.14
replicaset.apps/nginx-rs image updated
[root@master ~/kube/07/rs]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-8b7l7   1/1     Running   0          12s
nginx-rs-wfv4h   1/1     Running   0          12s
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
    Image:          nginx:1.15
    Image ID:       docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
    Image:          nginx:1.15
    Image ID:       docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
[root@master ~/kube/07/rs]# kubectl delete pod nginx-rs-8b7l7
pod "nginx-rs-8b7l7" deleted
[root@master ~/kube/07/rs]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-c6vld   1/1     Running   0          4s
nginx-rs-wfv4h   1/1     Running   0          43s
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
    Image:          nginx:1.14
    Image ID:       docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
    Image:          nginx:1.15
    Image ID:       docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
[root@master ~/kube/07/rs]# kubectl delete pod --all
pod "nginx-rs-c6vld" deleted
pod "nginx-rs-wfv4h" deleted
[root@master ~/kube/07/rs]# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-5sg44   1/1     Running   0          3s
nginx-rs-rfzkh   1/1     Running   0          3s
[root@master ~/kube/07/rs]# kubectl describe pod nginx-rs | grep Image
    Image:          nginx:1.14
    Image ID:       docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
    Image:          nginx:1.14
    Image ID:       docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d

▶ ReplicaSet도 자동 업데이트 롤백 기능 없음

0개의 댓글