Kubernetes Deployment

0️⃣1️⃣·6일 전
0

쿠버네티스

목록 보기
4/4

디플로이먼트

  • 디플로이먼트는 파드와 레플리카셋에 대한 선언적 업데이트를 제공
  • 디플로이먼트는 상태를 갖고 있고, 디플로이먼트 컨트롤러는 현재 상태에서 의도하는 상태로 비율을 조정하며 변경할 수 있다.
  • 새 레플리카셋을 생성하는 디플로이먼트를 정의하거나 기존 디플로이먼트를 제거하고, 모든 리소스를 새 디플로이먼트에 적용할 수 있다.
  • 3개의 Nginx 파드를 불러오기 위한 레플리카셋을 생성
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

디플로이먼트 업데이트

  • 디플로이먼트의 파드 템플릿이 변경된 경우에만 디플로이먼트의 롤아웃이 트리거된다. 예를 들면 템플릿의 레이블이나 컨테이너 이미지가 업데이트된 경우이다. 디플로이먼트의 스케일링과 같은 다른 업데이트는 롤아웃을 트리거하지 말아야 한다.
  • 최소 가용 파드 수 보장 (Max Unavailable)
    • 업데이트가 진행되는 동안, 의도한 파드 수의 75% 이상이 항상 동작하도록 보장합니다. 즉, 의도된 파드 수의 최대 25%까지만 중단될 수 있도록 합니다.
    • 예: 의도한 파드 수가 4개라면, 업데이트 동안 최대 1개의 파드만 중단될 수 있습니다. 나머지 3개(4개의 75%)는 항상 가용 상태를 유지합니다.
  • 최대 추가 파드 수 제한 (Max Surge)
    디플로이먼트는 의도한 파드 수를 초과하는 추가 파드의 수를 제한합니다. 기본 설정에서는 최대 의도한 파드 수의 125%까지 추가 파드가 생성될 수 있습니다.
    • 예: 의도한 파드 수가 4개라면, 최대 1개의 추가 파드(4개의 25%)가 생성될 수 있어 총 5개까지 생성될 수 있습니다.
      즉, 디플로이먼트는 의도한 파드 수에 비해 75% 이상의 가용성을 유지하면서도, 필요 시 최대 25%의 추가 파드를 생성하여 안전하게 업데이트가 완료되도록 합니다
  • 의도한 파드 수가 4개일 때는, 최소 3개에서 최대 5개의 파드를 가질 수 있다.

롤오버

  • 디플로이먼트 컨트롤러는 각 시간마다 새로운 디플로이먼트에서 레플리카셋이 의도한 파드를 생성하고 띄우는 것을 주시한다.

스케일링

  • 레플리카셋에 의도한 파드수를 조정하는 작업

상태

진행중

  • 디플로이먼트로 새 레플리카셋을 생성.
  • 디플로이먼트로 새로운 레플리카셋을 스케일 업.
  • 디플로이먼트로 기존 레플리카셋을 스케일 다운.
  • 새 파드가 준비되거나 이용할 수 있음(최소 준비 시간(초) 동안 준비됨).

완료

  • 디플로이먼트과 관련된 모든 레플리카가 지정된 최신 버전으로 업데이트 되었을 때. 즉, 요청한 모든 업데이트가 완료되었을 때.
  • 디플로이먼트와 관련한 모든 레플리카를 사용할 수 있을 때.
  • 디플로이먼트에 대해 이전 복제본이 실행되고 있지 않을 때.

실패

  • 할당량 부족
  • 준비성 프로브(readiness probe)의 실패
  • 이미지 풀 에러
  • 권한 부족
  • 범위 제한
  • 애플리케이션 런타임의 잘못된 구성

롤링 업데이트

  • 디플로이먼트는 .spec.strategy.type==RollingUpdate 이면 파드를 롤링 업데이트 방식으로 업데이트 한다. maxUnavailablemaxSurge 를 명시해서 롤링 업데이트 프로세스를 제어할 수 있다.

  • 최대 불가 (Max Unavailable)

    • 목적: 업데이트 중에 중단될 수 있는 파드의 최대 수를 정해, 의도한 파드의 최소 수를 유지합니다.
    • 설정 예시: 이 값을 30%로 설정하면, 의도한 파드의 70% 이상이 항상 가동 상태가 되도록 업데이트를 진행합니다. 즉, 의도한 파드가 10개라면, 최대 3개까지 중단될 수 있지만, 최소 7개는 항상 동작합니다.
  • 최대 서지 (Max Surge)

    • 목적: 업데이트 중에 생성할 수 있는 파드의 최대 수를 설정해, 의도한 파드보다 약간 많은 수의 파드가 일시적으로 실행될 수 있게 합니다.
    • 설정 예시: 이 값을 30%로 설정하면 의도한 파드 수의 최대 130%까지 일시적으로 파드를 운영할 수 있습니다. 의도한 파드 수가 10개라면, 최대 13개까지 파드가 생성되어 서비스의 안정성을 높입니다.
post-custom-banner

0개의 댓글