Fairy ' s
[K8s] Deployment 본문
애플리케이션이 담긴 컨테이너는 파드에 캡슐화된다. 파드 여러 개를 동시에 사용하도록 보장해주는 역할로 ReplicaSet을 사용했다. 오늘 배우게 될 Deployment는 ReplicaSet보다 한 단계 더 높은 계층 구조에 있다. (Deployment 생성 시 ReplicaSet 자동 생성)
Deployment
우리에게 배포해야 할 웹 서버가 있고, 웹 서버의 인스턴스가 많이 필요한 상황이다. 그리고 애플리케이션의 새 버전이 나올 때마다 Docker 인스턴스를 원활하게 업그레이드 하고 싶을 때, 모든 인스턴스를 한번에 업그레이드 할 경우 유저에게 영향을 미칠 수 있다. 이러한 업그레이드를 '롤링 업데이트' 라고 하는데, 만약 업그레이드를 하다 오류가 발생하면 최근 변경 사항들을 '롤백' 해야 할 것이다. 이러한 기능을 위해 Deployment를 사용할 수 있다.
Deployment는 원활한 업그레이드를 위해 롤링 업데이트를 사용하며, 롤백, 중지, 재개하는 기능을 제공한다.
Create Deployment
Deployment도 이전 컴포넌트들과 마찬가지로 Definition File을 생성하는데, Deployment의 Definition File은 ReplicaSet의 'kind' 부분만 다르고 나머지는 동일하게 사용한다.
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
labels:
app: myapp
type: front-end
spec:
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
selector:
matchLabels:
type: front-end
# Deployment 생성
$ kubectl create -f deployment.yaml
# Deployment 조회
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
myapp-deployment 3/3 3 3 49s
# ReplicaSet 조회
$ kubectl get replicaset # replicaset -> rs 대체 가능
NAME DESIRED CURRENT READY AGE
myapp-deployment-7b8f9fc866 3 3 2 49s
# Pod 조회
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-deployment-7b8f9fc866-5rrdr 0/1 ContainerCreating 0 45s
myapp-deployment-7b8f9fc866-hmvwg 0/1 ContainerCreating 0 45s
myapp-deployment-7b8f9fc866-k2qxg 0/1 ContainerCreating 0 45s
# 현재 생성되어 있는 모든 오브젝트 조회
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/myapp-deployment-7b8f9fc866-5rrdr 1/1 Running 0 118s
pod/myapp-deployment-7b8f9fc866-hmvwg 1/1 Running 0 118s
pod/myapp-deployment-7b8f9fc866-k2qxg 1/1 Running 0 118s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/myapp-deployment 3/3 3 3 4m47s
NAME DESIRED CURRENT READY AGE
replicaset.apps/myapp-deployment-7b8f9fc866 3 3 3 118s
'Study > K8s' 카테고리의 다른 글
[K8s] Services (0) | 2023.08.07 |
---|---|
[K8s] kubectl command (0) | 2023.08.07 |
[K8s] Replication controller & ReplicaSets (0) | 2023.08.05 |
[K8s] Pods (0) | 2023.07.28 |
[K8s] Kube Scheduler & Kublet & Kube Proxy (0) | 2023.07.12 |
Comments