카테고리 없음

쿠버네티스 Kubernetes 디플로이먼트 (Deployment)

두뚜 2021. 7. 14. 12:20

# 디플로이 먼트  (Deployment)

레플리케이션 컨트롤러 보다 더 상위 수준의 컨트롤러 리소스

파드를 컨트롤 하는게 아니라 컨트롤러를 컨트롤한다.

레플리카셋은 파드를 관리한다. 디플로이먼트는 파드를 관리 하지않고  레플리카 셋을 관리한다.

 

# 디플로이 먼트의 기능

디플로이먼트는 레플리카셋을 생성하고 관리하고 배포한다

쿠버네티스의 핵심 기능인 배포를 담당한다 ( 레플리카셋이 하지 못하는 기능 )

애플리케이션을 배포하고 업데이트를 수행하는 리소스

배포를하는 방법 업그레이드 하는 방법을 제공해주는 컨트롤러

 

명령형 커멘드로 kubecrl create deployment 리소스를 만든다.

명령형 명령어로 구성하면 app=리소스 이름으로 라벨링 된다.

디플로이먼트가 레플리카셋을 셀렉팅 하고있다

디플로이먼트가 레플리카셋을 셀렉팅, 레플리카셋이 파드를 셀렉팅 한다.

 

 

# deployment와 create의 차이

deployment 이미지를 가지고 실행하는 형태

create 처음부터 순서대로 만든다

 

 

# 디플로이먼트 정의

# 디플로이먼트 리소스의 YAML 오브젝트

디플로이먼트 리소스의 필드는  레플리카셋의 필드와 특별히 다르지 않다.

더보기

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ldh-deploy
  labels:
    app: ldh-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ldh-deploy
    template:
      metadata:
        labels:
          app: ldh-deploy
      spec:
        containers:
        - image: c1t1d0s7/myweb:v1
          name: ldh
          ports:
          - containerPort: 8080

 

 

# 디플로이먼트의 고유한 기능

디플로이먼트 리소스에만 적용 할 수 있는 배포 전략

https://thenewstack.io/deployment-strategies/

 

Six Strategies for Application Deployment - The New Stack

There are a variety of techniques to deploy new applications to production, so choosing the right strategy is an important decision, weighing the options in terms of the impact of change on the system, and on the end-users. In this post, we are going to t

thenewstack.io

어플리케이션의 배포 전략

 

 

# strategy 배포 전략 확인

 

# RollingUpdate  <default>

 

#용어 정리

 

1) rolling

서서히 순차적으로 바뀐다 (rollout, rollup 이라고도 한다)

새로운 어플리케이션을 추가할떄 재시작을 해야하므로 다운타임이 생긴다 이를 해결하기 위해 로드밸런서 시스템을 사용하여  한대씩 순차적으로 작업을 해준다.

로드밸런서에서 백엔드 하나를 끊는다(트래픽이 한쪽으로 흐름) -> 업데이트 -> 다시 연결 ->다른거 끊고 업데이트 연결

 

2) 24/7

24시간7일 -> 절대로 중단되면 안되는 서비스 (이 어플리케이션은 멈추지 않고 작동 해야한다)

-> 무중단 서비스 롤링 업데이트를 한다.

리눅스와 유닉스는 커널 업데이트하면 시스템 재부팅 해야한다 (다운타임 발생)

다운타임이 발생하지 않기 위해 새로운버전 만들고 기존버전 삭제한다.

 

 

# RollingUpdate

무중단배포

눌러서 보세요

다운타임이 발생하지 않기 위해 새로운버전을 만들고 기존버전 삭제한다.

새로운 버전 만들고 기존버전 지우고 새로운버전 만들고 기존버전 지우고 반복한다.

 

# RollingUpdate의 필드

# maxSurge

: 생성할 수 있는 최대 파드 수 (기본값:25%)

# maxUnavailable

: 롤링 업데이트 프로세스 중에 사용할 수 없는 최대 파드 수 (기본값:25%)

-> 예를들어 3개면 최대 1개 늘어날 수 있고 1개 줄어들 수 있다

 

 

 

 

 

# Recreate

눌러서 보세요

계획된 다운타임에 기존에 있던 파드 삭제하고 만든다.

삭제하고 만드는 시간동안 다운타임이 발생