Kubernetes 배포 및 복제본 세트

2894 단어

레플리카셋이란?



ReplicaSet의 목적은 주어진 시간에 실행되는 안정적인 레플리카 파드 세트를 유지하는 것입니다. ReplicaSet은 지정된 시간에 지정된 수의 포드 복제본이 실행되도록 합니다. ReplicaSet을 직접 만들 필요가 없는 경우가 많습니다. 대신 Deployment를 사용하여 ReplicaSet을 관리합니다. 먼저 ReplicaSet을 생성하는 방법을 살펴보겠습니다.

nginx 컨테이너의 인스턴스가 항상 3개 있도록 ReplicaSet을 생성합니다.

여기에서 .spec.selector는 레이블 선택기이며 ReplicaSet에서 획득할 잠재적 Pod를 식별하는 데 사용됩니다. 우리의 경우 라벨 티어: 프론트엔드가 있는 파드를 찾을 것입니다.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-replicaset
  labels:
    tier: frontend
spec:
  replicas: 2
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
      - name: my-nginx
        image: nginx

이 매니페스트를 replicaset.yaml에 저장하고 적용합니다.

$ kubectl apply -f replicaset.yaml
replicaset.apps/nginx-replicaset created

$ kubectl get replicaset
NAME               DESIRED   CURRENT   READY   AGE
nginx-replicaset   2         2         2       19s

$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-replicaset-7db6b   1/1     Running   0          19s
nginx-replicaset-ncz56   1/1     Running   0          19s

ReplicaSet이 배포되었으며 지정한 대로 2개의 POD가 있음을 알 수 있습니다.

배포로!



이제 우리는 ReplicaSet이 무엇이고 어떻게 생성하는지 보았으므로 이를 Deployment에 통합할 차례입니다.

A Deployment provides declarative updates for Pods ReplicaSets.



배포 매니페스트를 만들어 보겠습니다. 매니페스트를 처음부터 만드는 대신 kubectl을 사용하여 템플릿 파일을 만들 수 있습니다. --dry-run 플래그를 사용하여 리소스를 생성하지 않도록 kubectl에 지시합니다. 이렇게 하면 나중에 속성을 쉽게 수정할 수 있습니다.

$ kubectl create deployment nginx-deployment --image=nginx --dry-run=client -o yaml > deployment.yaml



 $ kubectl get deploy
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   1/1     1            1           4m9s

$ kubectl get po
NAME                                READY   STATUS        RESTARTS   AGE
nginx-deployment-5969c7f455-j6685   1/1     Running       0          3m39s

배포를 생성한 후에는 1개의 Pod만 생성된 것을 볼 수 있습니다. 이는 replicas 옵션에 대한 값을 지정하지 않았기 때문입니다. yaml 파일을 편집하여 배포를 확장하거나 명령적 방법을 사용할 수 있습니다.

$ kubectl scale deploy nginx-deployment --replicas=2
deployment.apps/nginx-deployment scaled

$ kubectl get deploy
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2/2     2            2           12m

$ kubectl get po
NAME                                READY   STATUS        RESTARTS   AGE
nginx-deployment-5969c7f455-9nrs7   1/1     Running       0          71s
nginx-deployment-5969c7f455-j6685   1/1     Running       0          6m20ss

좋은 웹페이지 즐겨찾기