*유데미에서 진행하는 Kubernetes for the Absolute Beginners - Hands-on 강의를 바탕으로 제작되었습니다.
쿠버네티스의 Deployment에 대해 알아보겠습니다.
deployment를 사용하면 롤링 업데이트가 가능해지는데, 서비스 중인 응용 프로그램을 새로운 버전으로 응용 프로그램을 업데이트하고 예상치 못한 상황이 발생했을 경우 다시 업데이트를 되돌리는 롤백이 가능합니다.
또한 파드 오류시 자동 복구되므로 어플리케이션의 고가용성을 보장합니다.
deployment와 replicaset의 관계는 다음과 같습니다.
deployment 아래에 replicaset이 있고 replicaset안에 응용 프로그램을 실행하는 pod들이 있습니다
그래서 deployment를 생성하면 replicaset이 따라서 생성되고 replicaset의 설정에 맞게 파드 수도 조정되어 생성됩니다.
deployment 파일을 yaml로 만들때 기본 구성은 다음과 같습니다. apiVersion, kind, metadata, spec등 루트 레벨의 4가지는 다르지 않습니다.
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
labels:
app: myapp
type: front-end
spec:
selector:
matchLabels:
type: front-end # 1
replicas: 3
template:
metadata:
name: myapp-pod
labels:
app: myapp # 2
type: front-end # 1
spec:
containers:
- name: nginx-container
image: nginx
*selector에 #1만 있고, #2는 없어도 deployment가 생성하는 replicaset이 파드를 구별하는데는 문제되지 않습니다. #1만 있어도 됩니다.
디플로이먼트 생성 명령어는 다음과 같습니다.
kubectl create -f deployment.yaml
>>
deployment.apps/myapp-deployment created
디플로이먼트가 잘 생성되었는지 확인하는 명령어입니다.
kubectl get deployments
>>
NAME READY UP-TO-DATE AVAILABLE AGE
myapp-deployment 3/3 3 3 13s
레플리카셋 확인하는 명령어를 입력하면 디플로이먼트가 생성한 레플리카셋을 확인할 수 있습니다.
kubectl get replicaset
>>
NAME DESIRED CURRENT READY AGE
myapp-deployment-6698cf956c 3 3 3 63s
파드 확인하는 명령어인데 myapp-deployment로 name 속성에 적은대로 deployment가 생성한 파드라는 것을 알 수 있습니다.
kubectl get pods
>>
NAME READY STATUS RESTARTS AGE
myapp-deployment-6698cf956c-d6xc7 1/1 Running 0 25m
myapp-deployment-6698cf956c-pxqtj 1/1 Running 0 25m
myapp-deployment-6698cf956c-x5wrl 1/1 Running 0 25m
또한 레플리카셋을 생성하므로 scale, edit 등의 명령어로 파드 수를 조정할 수도 있습니다.
문제)
Create a new Deployment with the below attributes using your own deployment definition file.
조건.
Name: httpd-frontend;
Replicas: 3;
Image: httpd:2.4-alpine
kubectl create deployment httpd-frontend --image=httpd:2.4-alpine --replicas=3
'[Cloud] > [Kubernetes]' 카테고리의 다른 글
[Kubenetes] 쿠버네티스 업데이트 & 롤백 2 (0) | 2024.05.25 |
---|---|
[Kubernetes] 쿠버네티스 업데이트 & 롤백 (0) | 2024.05.24 |
[Kubernetes] ReplicaSet 설정 명령어 (0) | 2024.05.23 |
[Kubernetes] 쿠버네티스 ReplicaSet (0) | 2024.05.22 |
[Kubernetes] 쿠버네티스 pod-definition 기본 형식 (0) | 2024.05.22 |