반응형
Deployment (디플로이먼트)
파드를 업데이트 하기 위한 선언적 명세
Deployment 리소스를 통한 설정 가능한 기능
- 레플리카셋, 즉 복제본 구성을 이용하여 파드를 원하는 개수만큼 실행시킬 수 있음
- Control Plane 을 이용하여 파드를 업데이트 할 수 있음
- 파드를 롤백할 수 있음
*복습* 다양한 배포 전략
어플리케이션 복제본에 대한 새버전 업데이트 배포 전략
1. 재생성 (Recreate) : 이전 버전을 삭제하고 새 버전 생성
2. 블루/그린 배포 : 한번에 이전 버전에서 새 버전으로 연결을 전환
3. 롤링 배포 : 이전 버전을 Scale down 하고, 새 버전을 Scale up 하는 방식으로 단계별로 교체 (롤아웃 이라고도 함)
4. 카나리 배포 : 새 버전이 잘 작동한닫고 판단되면, 이전 버전을 교체
Q. 디플로이먼트가 지원하는 배포 전략에서 블루/그린이나 카나리는 찾아볼 수 없다. 어떻게 블루/그린이나 카나리 배포를 할 수 있을까?
=> 블루/그린 배포
- 구버전의 인스턴스 크기와 동일하게 신버전의 인스턴스를 구성하고 로드밸런서를 통해 신버전을 업데이트 한다.
- 구버전과 신버전이 동시에 존재하는 시간이 있으며 서비스 오류에 대한 롤백이 빠르다
=> 카나리 배포
- 구버전과 신버전을 동시에 배포하며 pods의 개수를 전체 적은% 만큼 배포를 시작하여 신버전의 트래픽을 서서히 늘리다 오류 없이 잘 배포 된다면 최종적으로 신버전의 트래픽을 100%로 늘린다.
** Deployment 예시
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment # 디플로이먼트 이름
labels:
app: nginx
spec:
replicas: 3 # 유지하고자 하는 Pod 개수 (정상동작)
selector: # 관리하고자 하는 Pod를 선택하기 위한 조건 정의
matchLabels:
app: nginx
template: # 관리되고자 하는 Pod에 대해 정의하는 필드
# 여기서부터 파드 템플릿이다
metadata: # Pod의 metadata와 label은 반드시
labels: # Deployment의 selector 와 match 되어야 한다
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
# 여기까지 파드 템플릿이다
공식 문서를 통한 디플로이먼트 실습
디플로이먼트 적용
% kubectl apply -f <디플로이먼트_파일>
위 Deployment 예시를 활용하여 디플로이먼트 적용
응답 : deployment.apps/nginx-deployment created
% kubectl get deployment
응답 : 서비스 중인 deployment 정보 출력
% kubectl get pods
응답 : replica 개수가 3 이므로 3개의 pods 확인
% kubectl delete pod,service nginx
pod & service 삭제
** pod, service, deployment 삭제
#service확인
% kubectl get service
#service 삭제
% kubectl delete service <서비스이름>
#deployment 확인
% kubectl get deployments.apps
#deployment 삭제
% kubectl delete deployments.apps deploy-nginx
#pod확인
% kubectl get pod
#pod 삭제
% kubectl delete pod nginx
쿠버네티스 실습하기
대화형 튜토리얼 앱 배포하기
https://kubernetes.io/ko/docs/tutorials/kubernetes-basics/deploy-app/deploy-interactive/
디플로이먼트로 스테이트리스 어플리케이션 실행
https://kubernetes.io/ko/docs/tasks/run-application/run-stateless-application-deployment/
반응형
'Orchestration > Kubernates (k8s)' 카테고리의 다른 글
kubernetes 치트 시트 (0) | 2023.02.14 |
---|---|
[Mac OS] 파드 외부 노출 시키기 (k8s, kubernetes, pod) (0) | 2023.02.14 |
[Mac OS] 파드 란?(Pods, k8s, kubernetes) (0) | 2023.02.13 |
[Mac OS] 쿠버네티스 설치 (minikube 설치, minikube 실습, cozserver) (0) | 2023.02.13 |
쿠버네티스란? (kubernetes 란, k8s 란, 컨테이너 오케스트레이션) (0) | 2023.02.13 |