본문 바로가기

클라우드/쿠버네티스

Pod 배포 전략 및 기법

반응형

Kubernetes Autoscaling

  1. Pods layer autoscale
    • Horizontal Pod Autoscaler(HPA): pod의 replica 갯수를 조정
      • HPA 는 Pod의 메트릭 값을 30초 마다 한번씩 check.
      • 할당한 CPU나 메모리의 사용량이 증가하여 HPA에 적용한 한계치를 넘으면 HPA는 주로 deployment 또는 replicaset을 추가로 포드를 생성
    • Vertical Pod Autoscaler(VPA)
      • 메트릭값을 10초 간격으로 지속적으로 확인
      • VPA는 할당된 메모리 또는 CPU의 임계치를 넘으면 Pod 할당 값을 변경하는데, 이를 위해 VPA는 주로 deployment나 replicaset으로 설정된 POD 리소스 업데이트
  2. Cluster level scalability
  • Cluster Autoscaler는 노드의 리소스가 부족해서 기존 노드에 스케줄 할 수 없는 경우 추가 노드를 자동 프로비저닝.
  • 장시간 충분히 활용되지 못하는 노드는 해제
  • Cluster Autossclaer는 기존에 생성된 노드 중에 하나에 스케줄 할 수 없으면 새 노드가 프로비저닝
  • 프로세스
    • pending되어있는 cluster를 찾음
    • Cluster Autoscaler는 클라우드 제공업체에게 추가 노드를 시작하라고 요청
    • Cluster Autoscaler는 GCP, AWS 및 Azure 같은 클라우드 인프라스트럭처를 통해서 사용할 수 있음

Demonset

  • 클러스터의 모든 노드에서 단일 포드를 스케줄링하기 위해서도 포드 집합을 복제함
  • 일반적으로 포드를 모든 노드로 복제하는 이유는 각 노드에 일종의 에이전트나 daemon을 두려는 것
  • 데몬 셋은 쿠버네티스의 각 노드에서 Pod가 한 개씩 생성되도록 보장해주는 오브젝트.
  • 보통 로그 수집기나 모니터링 에이전트처럼 모든 노드에서 동작하는 시스템 데몬을 배포할 때 daemon set사용.
  • 데몬셋은 클러스터의 모든 노드에 포드를 배포함
  • 특별히 특정 노드에 배치하고자 할 때는 pod template에서 정의한 node Selector 와 함께 사용

JOB

  • 컨테이너가 성공으로 종료되면 다시 실행하지 않도록함
  • 실패로 종료되면 다시 실행
  • 작업이 완료되는 상태가 중요한 서비스에 유용

init container

  • 앱 컨테이너들이 실행되기 전에 실행되는 특수한 컨테이너

Canary deployment

  • 모든 파드를 업데이트 하는 두 가지 방법
    • 기존의 포드를 삭제한 다음 새로운 파드 시작
    • 새로운 것을 올려서 시작하고, 오래된 것을 지움
      • 모든 새 포드 추가한 다음 한번에 기존의 포드 삭제(blue-green deployment)
      • 순차적으로 새 포드를 추가하고 점차 오래된 포드 제거(Rolling Update)
  • Canary 배포
    • 기존 버전을 유지한 채로 일부 버전만 신규 버전으로 올려서 신규 버전에 버그나 이상은 없는지 확인

Deployments

  • Deployment = Replicaset + History(Revision)
  • Pod 배포에 대한 버전 관리 기능
  • bad rollout에 대해서 Roll back 할 수 있음
반응형

'클라우드 > 쿠버네티스' 카테고리의 다른 글

쿠버네티스 개요  (0) 2020.07.19