Fairy ' s

[K8s] Deployment 본문

Study/K8s

[K8s] Deployment

berafairy 2023. 8. 6. 23:03

 

 애플리케이션이 담긴 컨테이너는 파드에 캡슐화된다. 파드 여러 개를 동시에 사용하도록 보장해주는 역할로 ReplicaSet을 사용했다. 오늘 배우게 될 Deployment는 ReplicaSet보다 한 단계 더 높은 계층 구조에 있다. (Deployment 생성 시 ReplicaSet 자동 생성)

Deployment

 우리에게 배포해야 할 웹 서버가 있고, 웹 서버의 인스턴스가 많이 필요한 상황이다. 그리고 애플리케이션의 새 버전이 나올 때마다 Docker 인스턴스를 원활하게 업그레이드 하고 싶을 때, 모든 인스턴스를 한번에 업그레이드 할 경우 유저에게 영향을 미칠 수 있다. 이러한 업그레이드를 '롤링 업데이트' 라고 하는데, 만약 업그레이드를 하다 오류가 발생하면 최근 변경 사항들을 '롤백' 해야 할 것이다. 이러한 기능을 위해 Deployment를 사용할 수 있다. 

 Deployment는 원활한 업그레이드를 위해 롤링 업데이트를 사용하며, 롤백, 중지, 재개하는 기능을 제공한다. 


Create Deployment

Deployment도 이전 컴포넌트들과 마찬가지로 Definition File을 생성하는데, Deployment의 Definition File은 ReplicaSet의 'kind' 부분만 다르고 나머지는 동일하게 사용한다.

# deployment.yaml

apiVersion: apps/v1
  kind: Deployment
  metadata:
    name: myapp-deployment
    labels:
      app: myapp
      type: front-end
    spec:
      template:
        metadata:
          name: myapp-pod
          labels:
            app: myapp
            type: front-end
        spec:
          containers:
          - name: nginx-container
            image: nginx
      replicas: 3
      selector:
        matchLabels:
          type: front-end

 

# Deployment 생성
$ kubectl create -f deployment.yaml

# Deployment 조회
$ kubectl get deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
myapp-deployment   3/3     3            3           49s

# ReplicaSet 조회
$ kubectl get replicaset # replicaset -> rs 대체 가능
NAME                          DESIRED   CURRENT   READY   AGE
myapp-deployment-7b8f9fc866   3         3         2       49s

# Pod 조회
$ kubectl get pods
NAME                                READY   STATUS              RESTARTS        AGE
myapp-deployment-7b8f9fc866-5rrdr   0/1     ContainerCreating   0               45s
myapp-deployment-7b8f9fc866-hmvwg   0/1     ContainerCreating   0               45s
myapp-deployment-7b8f9fc866-k2qxg   0/1     ContainerCreating   0               45s

# 현재 생성되어 있는 모든 오브젝트 조회
$ kubectl get all
NAME                                    READY   STATUS    RESTARTS   AGE
pod/myapp-deployment-7b8f9fc866-5rrdr   1/1     Running   0          118s
pod/myapp-deployment-7b8f9fc866-hmvwg   1/1     Running   0          118s
pod/myapp-deployment-7b8f9fc866-k2qxg   1/1     Running   0          118s

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/myapp-deployment   3/3     3            3           4m47s

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/myapp-deployment-7b8f9fc866   3         3         3       118s

'Study > K8s' 카테고리의 다른 글

[K8s] Services  (0) 2023.08.07
[K8s] kubectl command  (0) 2023.08.07
[K8s] Replication controller & ReplicaSets  (0) 2023.08.05
[K8s] Pods  (0) 2023.07.28
[K8s] Kube Scheduler & Kublet & Kube Proxy  (0) 2023.07.12
Comments