본문 바로가기
서버인프라/kubernetes

[제 5강] Deployments

by techwold ted 2022. 12. 25.

배포는 포드 및 복제 세트에 대한 선언적 업데이트를 제공합니다.

배포에서 원하는 상태를 설명하면 배포 컨트롤러가 제어된 속도로 실제 상태를 원하는 상태로 변경합니다. 배포를 정의하여 새 복제본 집합을 만들거나 기존 배포를 제거하고 해당 리소스를 새 배포와 함께 모두 채택할 수 있습니다.

 

사용 사례
다음은 배포의 일반적인 사용 사례입니다.

  • 복제본 세트를 원격 설치할 배포를 작성합니다. ReplicaSet는 배경에 포드를 작성합니다. 원격 설치의 상태를 확인하여 성공 여부를 확인합니다.
  • 배포의 PodTemplateSpec을 업데이트하여 포드의 새 상태를 선언합니다. 새 복제본 세트가 작성되고 배포는 이전 복제본 세트에서 새 복제본 세트로 포드를 제어된 속도로 이동합니다. 각 새 복제본 집합은 배포의 수정본을 업데이트합니다.
  • 현재 배포 상태가 안정적이지 않으면 이전 배포 버전으로 롤백합니다. 롤백할 때마다 배포 버전이 업데이트됩니다.
  • 더 많은 로드를 용이하게 하기 위해 배포를 확장합니다.
  • 배포의 원격 설치를 일시 중지하여 해당 PodTemplateSpec에 여러 수정 프로그램을 적용한 다음 다시 시작하여 새 원격 설치를 시작하십시오.
  • 배포 상태를 원격 설치가 고착되었음을 나타내는 표시기로 사용합니다.
  • 더 이상 필요하지 않은 이전 복제본 집합 정리.
 

Creating a Deployment

다음은 배포의 예입니다. 다음 세 개의 nginx 포드를 불러오기 위해 ReplicaSet를 생성합니다.

vi nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      name: web-nginx
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14

위오 같이 설정하여 다음 yaml 파일을 실행합니다

kubectl create -f nginx-deploy.yaml

다음과 같이 생성된 모습을 확인할 수 있습니다. 확인하신 봐와 같이 metadata.name 필드로 표시되는 nginx-deployment 가 생성 됩니다. 그리고 아래와 같은 확인으로 deployments를 확인 할 수 있으며, replicaset 도 확인 할 수 있습니다.

root@master:~/yaml# kubectl get deployments.apps
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
deploy-nginx   3/3     3            3           9m19s

root@master:~/yaml# kubectl get rs
NAME                      DESIRED   CURRENT   READY   AGE
deploy-nginx-5dc7b68d94   3         3         3       9m5s
root@master:~/yaml# kubectl get pods --show-labels
NAME                            READY   STATUS    RESTARTS   AGE   LABELS
deploy-nginx-5dc7b68d94-964xh   1/1     Running   0          15s   app=webui,pod-template-hash=5dc7b68d94
deploy-nginx-5dc7b68d94-d64w2   1/1     Running   0          15s   app=webui,pod-template-hash=5dc7b68d94
deploy-nginx-5dc7b68d94-xvzsf   1/1     Running   0          15s   app=webui,pod-template-hash=5dc7b68d94

Deployment의 scale 

deployment는 아래와 같이 replicas를 변경 할 수 있습니다.

이전 scale rs로는 스케일이 조정 되지 않습니다. controller 의 구조가 아래 와 같기 때문입니다.

kubectl scale deployment deploy-nginx --replicas=5



Deployment가 Replicas를 항시 바라보고 있으며, 아래와 같은 명령어를 입력해도 Terminating 만 시킬뿐 deploycontroller가 체크하고 있다가 삭제 합니다.

kubectl scale rs deploy-nginx-5dc7b68d94 --replicas=10

deployment는 간단하게 마치겠습니다.

다들 한번씩만 해보시면 어렵지 않게 하실 수 있을 겁니다.

'서버인프라 > kubernetes' 카테고리의 다른 글

[제 7강] NameSapace  (4) 2022.12.29
[제 6강] Updating a Deployment  (1) 2022.12.27
[제 4강] ReplicaSet  (0) 2022.12.21
[제 3강] Resource Management  (0) 2022.12.19
[제 2강] 컨테이너 생성을 조금더 깊이있게  (4) 2022.12.16

댓글