반응형
1. 디플로이먼트의 업데이트 방법 4가지
- ReCreate
- Rolling Update
- Blue/Green
- Canary
#1) ReCreate
Pod1이 작동 중이라면 Pod1을 죽이고 Pod2를 실행시켜 업데이트하는 방식. Pod1이 죽고 Pod2가 실행되는 시간(Downtime)만큼의 빈 공간이 생긴다
#2) Rolling Update
Pod1이 1개 실행중이라면 Pod1이 실행된 상태로 Pod2를 실행한다 총 2개를 사용하는 셈 (이때 누군가는 Pod1에, Pod2에 접근할 수 있는 상태) 이후 Pod1을 삭제(이제부터 Pod2에만 접근함) 추가적인 자원을 요구하지만 Downtime이 없음
#3) Blue/Green
서비스와 연결된 pod1(컨트롤러1)이 실행 중일 때 pod2(컨트롤러 2)를 만듦 이후 서비스에 연결된 pod1을 pod2로 바꿔주면 pod2로 바꿀 수 있음(추가적인 자원을 요구하고, 서비스의 downtime 없음) 만약 pod2에 문제가 생기면 서비스에 연결된 pod만 pod1으로 바꿔주면 됨 문제가 없으면 pod1과 컨트롤러 1을 삭제해주면 됨
#4) Canary
업데이트 예정
2. Rolling Update 실습
다음과 같은 구조로 이루어져있을때 Deployment의 pod v1을 v2로 수정하면 자동으로 Rolling Update가 된다(Rolling Update가 Default)
Deployment.YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-deployment
spec:
replicas: 2
selector:
matchLabels:
type: app
template:
metadata:
labels:
type: app
spec:
containers:
- name: pod-test
image: diqmwl/pod:v1
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: test-service
spec:
selector:
type: app
ports:
- port: 9000
targetPort: 8080
다음과 같은 YAML에서 image: diqmwl/pod:v1 부분을 pod:v2로 수정하면 Rolling Update가 이루어진다.
반응형
'프로그래밍 > 도커 & 쿠버네티스' 카테고리의 다른 글
[쿠버네티스] #5. Ingress에 https적용하기 / tls적용하기 / letsencrypt적용하기 (0) | 2020.04.14 |
---|---|
[쿠버네티스] #3. 컨트롤러란? ReplicaSet이란? Template, Replicas, Selector란? (0) | 2020.03.10 |
[Docker & Kubernetes] 도커를 이용하여 Express 배포하기 (0) | 2020.03.09 |
[쿠버네티스] #2. 서비스란? Service란? (0) | 2020.02.25 |
[쿠버네티스] #1. Pod란? 파드란? (0) | 2020.02.22 |