Deployments를 사용하는 이유?
다음과 같은 이유로 Deployment를 사용한다.
1) Production 환경에서 웹 서버를 운영하려고 할 때,
여러 이유로 인해 하나가 아닌 여러개의 instances들을 동작시켜야 할 필요가 있을 수 있다.
2) 새로운 버전의 application이 docker registry에 등록되어 available 하게 되면 이를 운영 중인 애플리케이션에 적용시키고 싶을 것.
이때, docker instances들이 운영 중에 장애가 나지 않도록 하나씩 업데이트되는 방식을 rolling update라고 한다.
3) 만약 rolling updates 중에 장애가 나면 해당 작업을 rollback.
4) 환경 자체에 여러 변경 및 upgrade가 적용되어야 할 때 (예를 들어 web server 버전 변경, 스케일 업/다운, 자원 위치 변경 등) 각각의 변화에 대해 바로 즉각 적용되기는 것 보다, 프로덕션 환경의 중지 후, 변경사항을 적용한 후에 재게 하여 모든 적용 사항들이 제대로 적용되도록 하고 싶을 것.
Deployment 기능
Container는 각각의 Pod에 Encapsulated 되어 있다.
하나의 Pod에는 그에 해당되는 애플리케이션이 배포된다.
이 Container는 Pod 안에 encapsulated 되어 있으며,
각각의 Pod들은 Replication Controllers 또는 ReplicaSet을 통해 배포된다.
Deployment는 그 상위 단계에 해당되는 기능을 제공한다.
Deployment는 휘하의 객체들이 끊김 없이 자연스럽게 rolling updates 할 수 있도록 하며,
변경사항을 되돌리거나, 필요에 맞춰 이 변경사항 적용을 중단하거나 재개할 수 있다.
Deployment 생성방법
ReplicaSet과 동일하게 생겼으나 kind만 Deployment로 바꿔주면 된다.
다음의 커맨드를 사용해 Deployment를 적용시킬 수 있다.
#deployment 파일을 통해 deployments 생성
kubectl create -f deployment-definition.yml
#생성된 deployments 확인하기
kubectl get deployments
#deployments 자동으로 생성해주는 replicaset 확인하기
kubectl get replicaset
#생성된 replicaset이 생성해주는 pods 확인하기
kubectl get pods
결과적으로 Deployments만 만들어 실행시켜 주면, ReplicaSet, Pods는 자동으로 생성된다.
commands
생성된 모든 objects들을 한 번에 보기 위한 커맨드
kubectl get all
Kubernetes - Update and Rollback (1) | 2024.01.03 |
---|---|
Kubernetes - Replication Controllers and ReplicaSets (1) | 2023.12.26 |