워크로드 자동 확장

워크로드 자동 확장 (Autoscaling Workloads)

자동 확장을 사용하면 워크로드를 어떤 방식으로든 자동으로 업데이트할 수 있어요. 이 덕분에 클러스터가 리소스 수요 변화에 더 유연하고 효율적으로 반응할 수 있어요.

Kubernetes에서 워크로드의 현재 리소스 수요에 따라 스케일 할 수 있어요. 스케일하면 워크로드가 관리하는 replica 수를 늘리거나 줄이거나(수평 스케일링, horizontal scaling), replica에 사용 가능한 리소스를 제자리에서 조정할 수 있어요(수직 스케일링, vertical scaling).

워크로드 수동 스케일링

Kubernetes는 워크로드의 수동 스케일링을 지원해요. 수평 스케일링은 kubectl CLI로 할 수 있고, 수직 스케일링은 워크로드의 resource 정의를 패치해야 해요.

워크로드 자동 스케일링

수평 자동 스케일링

HorizontalPodAutoscaler (HPA)로 워크로드를 수평으로 자동 스케일링할 수 있어요. 이것은 Kubernetes API 리소스이자 컨트롤러로 구현되며, CPU나 메모리 사용 같은 관측된 리소스 활용률에 맞춰 워크로드의 replica 수를 주기적으로 조정해요.

수직 자동 스케일링

FEATURE STATE: Kubernetes v1.25 [stable]

VerticalPodAutoscaler (VPA)로 워크로드를 수직으로 자동 스케일링할 수 있어요. HPA와 달리 VPA는 Kubernetes에 기본으로 포함되지 않아요. 사용하기 전에 사용자나 클러스터 관리자가 배포해야 하는 add-on이에요.

설치하면 관리되는 replica의 리소스를 언제 어떻게 스케일할지 정의하는 CustomResourceDefinitions (CRDs)를 워크로드에 만들 수 있게 해줘요.

참고: VPA가 동작하려면 클러스터에 Metrics Server가 설치되어 있어야 해요.

제자리 Pod 수직 확장

FEATURE STATE: Kubernetes v1.35 [stable](기본 활성화)

Kubernetes 1.36 기준으로 VPA는 Pod를 제자리에서 크기 조정하는 것을 지원하지 않지만, 이 통합이 작업 중이에요. 수동으로 Pod를 제자리에서 크기 조정하려면 Resize Container Resources In-Place를 보세요.

클러스터 크기 기반 자동 확장

클러스터 크기(cluster-dns 같은 시스템 컴포넌트)에 따라 스케일해야 하는 워크로드에는 Cluster Proportional Autoscaler를 사용할 수 있어요. VPA처럼 Kubernetes 핵심에 포함되지 않고 GitHub의 별도 프로젝트로 호스팅돼요.

Cluster Proportional Autoscaler는 스케줄 가능한 노드와 코어 수를 관찰하고 대상 워크로드의 replica 수를 그에 맞게 스케일해요. replica 수를 그대로 두고 싶다면 Cluster Proportional Vertical Autoscaler를 사용할 수 있어요(현재 beta).

이벤트 기반 자동 확장

Kubernetes Event Driven Autoscaler (KEDA) 같은 도구로 이벤트 기반으로 워크로드를 스케일할 수도 있어요. KEDA는 CNCF 졸업 프로젝트로, 처리해야 할 이벤트 수(예: 큐의 메시지 수)에 따라 워크로드를 스케일하게 해줘요. 다양한 이벤트 소스 어댑터가 있어요.

스케줄 기반 자동 확장

스케일링 작업을 스케줄하는 것도 일반적인 전략이에요 (예: 비수기 동안 리소스 소비 줄이기). KEDA와 Cron scaler를 함께 사용하면 됩니다. Cron scaler는 워크로드를 스케일 인/아웃하는 스케줄(과 시간대)을 정의하게 해줘요.

클러스터 인프라 스케일링

워크로드 스케일링으로 충분하지 않다면 클러스터 인프라 자체를 스케일할 수도 있어요. 이는 보통 노드를 추가하거나 제거하는 것을 의미해요. Node autoscaling을 참고하세요.

더 알아보기 (Learn more)