SseopE
SseopE
SseopE
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Programming (3)
      • JAVA (3)
    • Spring (7)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (5)
      • Spring 공부 (0)
    • Infra (6)
      • Docker (3)
      • Kubernetes (3)
      • Kafka (0)
    • Machine Learning (2)
      • Scikit-Learn (1)
      • MLOps (1)
      • BentoML (0)
      • Kubeflow (0)
    • OS (2)
      • Linux (2)
    • Algorithm (23)
      • Sorting (7)
      • BOJ (15)
      • Programmers (0)
      • Data Structure (1)
    • 특강 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 2275번
  • 1541번
  • 2580번
  • Spring
  • Kubernetes
  • 자바
  • 스웜 모드
  • 도커
  • 2981번
  • 백준
  • 1931번
  • docker
  • java
  • TransformMixin
  • Spring boot
  • BaseEstimator
  • container
  • boj
  • scikit learn
  • resource

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
SseopE

SseopE

Kubernetes Deployment (쿠버네티스 디플로이먼트)
Infra/Kubernetes

Kubernetes Deployment (쿠버네티스 디플로이먼트)

2022. 8. 30. 17:03

Deployment : 레플리카셋 및 포드의 배포 관리

  • 레플리카셋과 포드를 정의하는 오브젝트
  • 레플리카셋만 사용해도 충분히 MSA 구조의 컨테이너를 구성할 수 있을 것 같지만, 실제 운영 환경에서 레플리카셋만으로 하는 경우는 거의 없음 대부분 디플로이먼트를 활용

nginx 예제

# deployment-nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
	name: mg-nginx-deployment
spec:
	replicas: 3
	selector:
		matchLabels:
			app: my-nginx
	template:
		metadata:
			name: my-nginx-pod
			labels:
				app: my-nginx
		spec:
			containers:
			- name: nginx
				image: nginx:1.10
				ports:
					containerPort: 80
  • 레플리카 셋과 거의 동일하고 kind만 바뀜
kubectl apply -f deployment-nginx.yaml
  • 생성 후 확인

  • 레플리카셋의 이름을 보면 name 뒤에 hash 값이 하나 생성되서 붙는데 레플리카셋이나 레플리카셋이 생성한 Pod에 pod-template-hash={hash}라는 라벨이 추가됨.
  • 이를 이용해서 다양한 배포 전략을 진행

배포전략 예시 (image update, rollback)

  • 아래의 명령어를 통해서 현재 상태를 기록
kubectl apply -f deployment-nginx.yaml --record
  • 현재 nginx의 이미지를 1.10 → 1.11 로 변경하고 —record 옵션을 통해서 기록
kubectl set image deployment my-nginx-deployment nginx=nginx:1.11 --record
  • 변경하고 빠르게 —watch 옵션을 붙여서 pods의 상태를 계속 살펴보면 새로운 hash 가 붙은 pods가 생성되며 이전 hash가 붙은 pods은 삭제되는 모습을 볼 수 있음

  • rollout history를 통해 여때 까지 기록된 revision들을 볼 수있음
kubectl rollout history deployment my-nginx-deployment

  • rollout undo 명령어와 —to-revision={version} 옵션을 통해 버전 다운 가능
kubectl rollout undo deployment my-nginx-deployment --to-revision=1

 

  • 생성된 팟, 레플리카셋의 해쉬라벨이 모두 같은것을 확인할 수 있고 rollout된 revision 2의 해쉬 오브젝트들은 desired=0, current=0인것을 볼 수 있음
  • 이처럼 디플로이먼트는 여러 개의 레플리카셋을 관리하기 위한 상위 오브젝트
  • 이를 이용한 다양한 배포 전략을 실현 가능
  • 마무리
    # 사용한 리소스 정리
    kubectl delete deployment,pods,rs --all

'Infra > Kubernetes' 카테고리의 다른 글

Kubernetes Service (쿠버네티스 서비스)  (0) 2022.08.31
Kubernetes Pod (쿠버네티스 팟)  (0) 2022.08.30
    'Infra/Kubernetes' 카테고리의 다른 글
    • Kubernetes Service (쿠버네티스 서비스)
    • Kubernetes Pod (쿠버네티스 팟)
    SseopE
    SseopE

    티스토리툴바