Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- nas
- Notification
- gitlab
- 3D프린터
- 네이버클라우드
- data serialization formats
- github
- octoprint
- Kotlin
- Jenkins
- docker
- 3D모델링
- 3D
- OnlineIDE
- linux job
- 3d프린터 초보
- kubernetes
- 코틀린개발환경
- 3D프린터입문
- 데이터 직렬화 포맷
- 3D 프린터 용어
- git
- docker container
- 3D프린터 입문
- NAS HDD교체
- Token인증방식
- C언어
- ci/cd
- IoTNetwork
- 리눅스 파일동기화
Archives
- Today
- Total
0과 1을 공부하다.
[Kube] Kubernetes - Deployment (6) 본문
728x90
본 게시글은 인프런 subicura 강사님의 초보를 위한 쿠버네티스 안내서 강의 수강 후 작성한 내용입니다.
Deployment (배포)
- Deployment는 쿠버네티스에서 가장 널리 사용되는 오브젝트이다.
- ReplicaSet을 이용하여 Pod을 업데이트하고 이력을 관리하여 롤백(Rollback)하거나 특정 버전(revision)으로 돌아갈 수 있다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo-deploy
spec:
replicas: 4
selector:
matchLabels:
app: echo
tier: app
template:
metadata:
labels:
app: echo
tier: app
spec:
containers:
- name: echo
image: ghcr.io/subicura/echo:v1
# Deployment 생성
kubectl apply -f echo-deployment.yml
# 리소스 확인
kubectl get po,rs,deploy
#---------
NAME READY STATUS RESTARTS AGE
pod/echo-deploy-5f9566c4d9-7pmrp 1/1 Running 0 9s
pod/echo-deploy-5f9566c4d9-j97jb 1/1 Running 0 9s
pod/echo-deploy-5f9566c4d9-l47nd 1/1 Running 0 9s
pod/echo-deploy-5f9566c4d9-sxchs 1/1 Running 0 9s
NAME DESIRED CURRENT READY AGE
replicaset.apps/echo-deploy-5f9566c4d9 4 4 4 9s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/echo-deploy 4/4 4 4 9s
#---------
image: ghcr.io/subicura/echo:v1 을 image: ghcr.io/subicura/echo:v2 으로 변경 후 다시 배포
# Deployment 생성
kubectl apply -f echo-deployment.yml
# 리소스 확인
kubectl get po,rs,deploy
#---------
NAME READY STATUS RESTARTS AGE
pod/echo-deploy-54c84dd47b-x44s6 1/1 Running 0 4s
pod/echo-deploy-54c84dd47b-xdx22 1/1 Running 0 6s
pod/echo-deploy-54c84dd47b-xf6sd 1/1 Running 0 6s
pod/echo-deploy-54c84dd47b-xpzx8 1/1 Running 0 4s
NAME DESIRED CURRENT READY AGE
replicaset.apps/echo-deploy-54c84dd47b 4 4 4 6s
replicaset.apps/echo-deploy-5f9566c4d9 0 0 0 99s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/echo-deploy 4/4 4 4 99s
#---------
Deployment 버전 업데이트 절차
- Deployment 새로운 버전을 업데이트하기 위해 레플리카 셋을 이용한다.
- 버전을 업데이트하면 새로운 ReplicaSet을 생성하고 해당 ReplicaSet이 새로운 버전의 Pod을 생성한다.
- 새로운 ReplicaSet을 0 -> 1개로 조정하고 정상적으로 Pod이 동작하면 기존 ReplicaSet을 4 -> 3개로 조정한다.
- 새로운 ReplicaSet을 1 -> 2개로 조정하고 정상적으로 Pod이 동작하면 기존 ReplicaSet을 3 -> 2개로 조정한다.
- 새로운 ReplicaSet을 2 -> 3개로 조정하고 정상적으로 Pod이 동작하면 기존 ReplicaSet을 2 -> 1개로 조정한다.
- 최종적으로 새로운 ReplicaSet을 4개로 조정하고 정상적으로 Pod이 동작하면 기존 ReplicaSet을 0개로 조정한다
- 업데이트 완료
버전관리
- Deployment는 변경된 상태를 기록한다.
# 히스토리 확인
$ kubectl rollout history deploy/echo-deploy
# revision 1 히스토리 상세 확인
$ kubectl rollout history deploy/echo-deploy --revision=1
# 바로 전으로 롤백
$ kubectl rollout undo deploy/echo-deploy
# 특정 버전으로 롤백
$ kubectl rollout undo deploy/echo-deploy --to-revision=2
배포 전략 설정
- Deployment 다양한 방식의 배포 전략이 있다.
- 롤링업데이트(RollingUpdate) 방식을 사용할 때 동시에 업데이트하는 Pod의 개수를 변경한다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo-deploy-st
spec:
replicas: 4
selector:
matchLabels:
app: echo
tier: app
minReadySeconds: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 3
maxUnavailable: 3
template:
metadata:
labels:
app: echo
tier: app
spec:
containers:
- name: echo
image: ghcr.io/subicura/echo:v1
livenessProbe:
httpGet:
path: /
port: 3000
참고 사이트
728x90
'Study > Server' 카테고리의 다른 글
[Kube] Kubernetes - Pod (5) (0) | 2024.07.22 |
---|---|
[Kube] Kubernetes - kubectl 명령어 (4) (0) | 2024.07.19 |
[Kube] Kubernetes - 실습 환경 구성 (3) (0) | 2024.07.16 |
[Kube] Kubernetes - 특징 및 아키텍처 (2) (0) | 2024.07.16 |
[Kube] Kubernetes - 컨테이너 오케스트레이션이란 ? (1) (0) | 2024.07.15 |
Comments