반응형
Kubernetes Autoscaling
- 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 리소스 업데이트
- Horizontal Pod Autoscaler(HPA): pod의 replica 갯수를 조정
- 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 할 수 있음
반응형