Container Orchestration/Kubernetes

Kubernetes Autoscaling & Karpenter

Somaz 2023. 5. 24. 20:07
728x90
반응형

Overview

오늘은 Kubernetes Autoscaling과 Karpenter에 대해서 공부해보려고 한다.

 


Kubernetes Autoscaling이란?

Kubernetes Auto Scaling은 Kubernetes 클러스터가 워크로드에 따라 용량을 자동으로 조정하는 기능을 말한다.

파드(Pod)에 효율적으로 실행할 수 있는 충분한 리소스가 있는지 확인하는 동시에 낭비를 방지하기 위해 리소스 사용을 최적화하는 데 도움이 된다.

 

https://medium.com/@arton.demaku/horizontal-auto-scaling-in-kubernetes-fc0809d6668

 

Kubernetes Autoscaler

일반적으로 stateless 서버는 HPA를 사용하는 것이 적합하다.

VPA는 리소스를 변경하는 과정에서 pod의 재시작이 불가피하고, 하나의 node가 가질 수 있는 리소스(CPU, 메모리)에는 한계가 있기 때문이다.

 

출처 : https://tech.scatterlab.co.kr/kubernetes-hpa-custom-metric/

 

HPA(Horizontal Pod Autoscaler) : CPU 사용률 또는 메트릭을 기반으로 Replication Controller, Deployment, Replication set, Statefulset의 Pod 수를 자동으로 조정한다. 메트릭을 주기적으로 확인하고 관찰된 메트릭 값이 설정된 목표에서 벗어나는 경우 Replica 수를 조정한다. Scale out 하는 오토스케일러 이다.

 

VPA(Vertical Pod Autoscaler) : Pod의 CPU 및 메모리 예약을 자동으로 조정하여 리소스 효율성을 보장한다. request 리소스 사용 기록을 기반으로 컨테이너의 값을 업데이트하여 각 포드가 효과적으로 실행하기에 충분한 리소스만 갖도록 한다. 변경 사항을 권장하거나 이러한 변경 사항을 자동으로 적용하도록 구성할 수 있다. Scale up 하는 오토스케일러 이다.

 

CA(Cluster Autoscaler) : Kubernetes 클러스터 자체의 크기를 자동으로 조정한다. 리소스가 부족하여 실행에 실패한 클러스터에 포드가 있는 경우 더 많은 노드를 추가할 수 있다. 노드 사용률이 낮고 해당 포드가 다른 노드에서 예약될 수 있는 경우 이러한 노드를 제거할 수 있다.

 

 

Scale up vs Scale out

스케일 업과 스케일 아웃은 인프라 확장을 위해 더 많은 로드를 처리하기 위해 시스템 용량을 늘리는 방법을 설명하는 데 사용되는 용어이다. 이는 컴퓨팅, 특히 클라우드 서비스 및 인프라 맥락에서 일반적인 개념이다.

https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/

 

 


Karpenter란?

Karpenter는 AWS에서 구축한 Kubernetes 네이티브 오픈 소스 프로젝트이다.

Karpenter는 직접 EC2 Instance를 생성하여 node를 provisioning 하므로 새로운 node 생성 속도가 훨씬 빠르다.

다양한 인스턴스 유형 선택, 온디맨드 및 스팟 인스턴스 프로비저닝, 다중 테넌시, 전용 노드 사용 등과 같은 기능으로 보다 다양한 워크로드를 처리하도록 설계되었다.

Kubernetes의 Cluster Autoscaler에 비해 유연하고 노드 자동 확장에 더 중점을 둔다. Karpenter는 리소스 요구 사항, taint 및 기타 제약 조건을 고려하여 예약되지 않은 포드의 요구 사항을 기반으로 노드를 프로비저닝한다.

https://www.qovery.com/blog/kubernetes-cluster-autoscaler-vs-karpenter

 

 

Karpenter vs Cluster Autoscaler

CA(Cluster Autoscaler)와 Karpenter는 모두 Kubernetes 클러스터 내의 노드 자동 확장을 위한 도구이다.

CA는 현재 워크로드를 기반으로 클러스터 크기를 확장하여 모든 팟(Pod)이 실행할 장소를 확보하고 불필요한 노드를 최소화하는 Kubernetes 네이티브 솔루션이다. 다양한 클라우드 공급자를 지원한다.

반면 AWS에서 개발한 오픈 소스 프로젝트인 Karpenter는 더 많은 유연성과 효율성을 제공한다. 다양한 워크로드와 다양한 인스턴스 유형을 관리하고 온디맨드 및 스팟 인스턴스를 처리하며 주로 AWS 환경에 최적화된 다중 테넌시 및 전용 노드 사용을 지원하도록 설계되었다.

https://www.qovery.com/blog/kubernetes-cluster-autoscaler-vs-karpenter

 


Reference

https://kubernetes.io/ko/docs/tasks/run-application/horizontal-pod-autoscale/

 

https://tech.scatterlab.co.kr/kubernetes-hpa-custom-metric/

 

https://saramin.github.io/2022-05-17-kubernetes-autoscaling/

 

https://medium.com/@arton.demaku/horizontal-auto-scaling-in-kubernetes-fc0809d6668

 

https://aws.amazon.com/ko/blogs/aws/introducing-karpenter-an-open-source-high-performance-kubernetes-cluster-autoscaler/

 

https://www.qovery.com/blog/kubernetes-cluster-autoscaler-vs-karpenter

 

https://tech.scatterlab.co.kr/spot-karpenter/

 

https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/

728x90
반응형

'Container Orchestration > Kubernetes' 카테고리의 다른 글

1. Kustomize란?  (0) 2023.10.12
CertManager로 Let's Encrypt 인증서 발급  (2) 2023.10.03
Helm Chart 작성방법  (0) 2023.05.18
Helm 이란? (Kubernetes Package manager)  (2) 2023.05.16
Kuberntes Service Account란?  (0) 2023.05.10