rueki

쿠버네티스 디플로이먼트 본문

쿠버네티스, 도커

쿠버네티스 디플로이먼트

륵기 2022. 2. 23. 23:43
728x90
반응형

디플로이먼트 : 여러 레플리카셋을 관리하여 롤링 업데이트나 롤백 등을 구현하는 리소스

                    디플로이먼트가 레플리카셋을 관리, 레플리카셋이 파드를 관리하는 구조

 

- deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: sample-app
  template:
    metadata:
      labels:
        app: sample-app
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.16

- 디플로이먼트 설치

kubectl apply -f sample-deployment.yaml

설치하고, 디플로이먼트, 레플리카셋, 파드 순으로 조회를 해보면 디플로이먼트를 생성하면서 생겨난 레플리카셋, 파드가 다 조회되는 것을 볼 수가 있다.

 

- 컨테이너 이미지 업데이트 해보기

kubectl set image deployment sample-deployment nginx-container=nginx:1.17

nginx:1.16버전에서 nginx:1.17로 업데이트 하는 방법이며 yaml파일을 수정해서 진행도 가능이 하다.

이렇게 업데이트 되면 다 새로 생성되는데, 롤업 방식으로 업데이트 되기때문에 실제로 서비스에는 영향이 없다고 한다.

레플리카셋을 조회했을 때 예전에 생성했던 것이 없어지고 이전되었는 것을 볼 수 있다.

 

- 디플로이먼트 롤백

먼저 디플로이먼트 변경 이력 확인

kubectl rollout history deployment sample-deployment

버전이 1, 2가 있는데 2가 지금 현재 변경한 이후의 상태이다.

 

버전 지정해서 롤백하는 법은 아래와 같다.

kubectl rollout undo deployment sample-deployment --to-revision 1

이전버전으로 롤백하는 경우는 --to-revision을 쓰지 않으면 된다.(0으로 default가 되어 있음)

디플로이먼트를 조회 했을 때 다시 롤백된 것을 확인할 수가 있다.

 

- 디플로이먼트 업데이트 전략

* Recreate

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-deployment-recreate
spec:
  strategy:
    tpye: Recreate
  replicas: 3
  selector:
    matchLabels:
      app: sample-app
    template:
      metadata:
        labels:
          app: sample-app
      spec:
        containers:
        - name: nginx-container
          image: nginx:1.16

Recreate는 모든 파드를 한 번 삭제하고 다시 파드를 생성하는 방법으로, 추가 리소스를 사용하지 않고 전환이 빠르다.

기존 레플리카셋의 수를 0으로 하고 리소스 반환해서 신규 레플리카셋을 늘리는 방식으로 진행이 도고 일괄적 업데이터로 인해 빠르게 전환이 된다.

그러나 일시적으로 파드가 존재하지 않는 텀이 발생하여 일시적 서비스 중단이 일어날 수도 있다.

 

* Rolling Update

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-deployment-rollingupdate
spec:
  strategy:
    tpye: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  replicas: 3
  selector:
    matchLabels:
      app: sample-app
  template:
    metadata:
      labels:
        app: sample-app
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.16

업데이트 중에 동시에 정지 가능한 최대 파드 수(maxUnavailable)와 업데이트 중에 동시에 생성할 수 있는 최대 파드 수를 설정함에 따라 추가 리소스를 사용하지 않도록 하거나 빠르게 전환하는 등 업데이트를 하면서 동작 제어가 가능하다.

728x90
반응형

'쿠버네티스, 도커' 카테고리의 다른 글

쿠버네티스 스테이트풀셋  (0) 2022.02.24
쿠버네티스 레플리카셋  (0) 2022.02.23
쿠버네티스 파드  (0) 2022.02.22
쿠버네티스 리소스 종류  (0) 2022.02.21
쿠버네티스 환경  (0) 2022.02.21
Comments