Tools/Kubernetes

[CKA 도전 시리즈] 7. Deployment

MOMOBOB 2023. 1. 19. 20:39
반응형

 

Deployment 

ReplicaSet을 컨트롤해서 Pod수를 조절 
ReplicaSet에서 Rolling Update & Rolling Back 추가

 

Deployment 생성

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14

 

Deployment 스케일링

kubectl scale deployment <deploy_name> --replicas=<갯수>

# 예 : deploy-nginx이름의 deployment replicas를 3으로 스케일아웃하시오.
kubectl scale deployment deploy-nginx --replicas=3

 

 

반응형

 

예제 1

1. webserver 라는 이름으로 아래 정보의 deployment 를 생성하시오

• 이름: webserver
• replicas 수 : 2
• label: app_env_stage=dev
• container name: webserver
• container image: nginx:1.14

2. 다음, webserver Deployment 의 pod 수를 3개로 확장하시오 .

 

1. yaml 생성

kubectl create deployment webserver --replicas=2 --image=nginx:1.14 --dry-run=client -o yaml > webserver.yaml

 

2. yaml 수정

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app_env_stage: dev
  name: webserver
spec:
  replicas: 2
  selector:
    matchLabels:
      app: webserver
  template:
    metadata:
      labels:
        app: webserver
    spec:
      containers:
      - image: nginx:1.14
        name: webserver

 

3. apply yaml

kubectl apply -f webserver.yaml

 

4. replicas 3개로 확장

kubectl scale deployment webserver --replicas=3

 

Rolling Update / Rollback

  • Rolling Update
동작중인 애플리케이션의 서비스 중단 없이 점진적으로 Pod 업데이트
kubectl set image deployment <deploy_name> <container_name>=<new_version_image> --record

 

  • Rollback
동작중인 애플리케이션 서비스 중단 없이 이전 버전으로 되돌리기
# history 확인
kubectl rollout history deployment <deploy_name>

# Rollback
kubectl rollout undo deployment <deploy_name> 
kubectl rollout undo deployment <deploy_name> --to-revision=NUMBER
  • 롤백하면 히스토리에 쌓이는게 아니고 되돌린 버전이 제일 최신으로 이동 (예제로 확인)

 

예제 2 

예제1번 Deployment 업데이트 후 롤백

- 예제 1번 Deployment를 1.15로 업데이트
- 바로 1.16으로 업데이트
- 히스토리 확인 후 이전버전으로 롤백

 

1. nginx 1.15로 업데이트

kubectl set image deployment webserver webserver=nginx.1.15 --record

 

2. nginx 1.16, 1.17로 차례로 업데이트

kubectl set image deployment webserver webserver=nginx.1.16 --record
kubectl set image deployment webserver webserver=nginx.1.17 --record

 

3. 히스토리 확인

kubectl rollout history deployment webserver

 

4. 롤벡

kubectl rollout undo deployment webserver --to-revision=2

  •  2버전으로 되돌릴 경우, 1.15가 가장 최신으로 이동함.

 

끝.

 

 


Thank you!

 

 

반응형