Skip to content

Commit cd78b2b

Browse files
authored
Merge pull request #51864 from hyorimlee/autoscaling
[ko] Translate concepts/workloads/autoscaling.md into korean
2 parents 28005f5 + 3997b62 commit cd78b2b

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
---
2+
title: 오토스케일링 워크로드
3+
description: >-
4+
오토스케일링을 사용하면, 워크로드를 자동으로 여러 방식으로 업데이트를 할 수 있다. 이것은 클러스터가 리소스 요청에 좀 더 유연하고 효율적으로 반응하게 해준다.
5+
content_type: concept
6+
weight: 40
7+
---
8+
9+
<!-- overview -->
10+
11+
쿠버네티스에서는 현재 리소스 수요에 따라 워크로드를 _스케일링_ 할 수 있다.
12+
이를 통해 클러스터가 리소스 수요 변화에 보다 탄력적이고 효율적으로 대응할 수 있다.
13+
14+
워크로드를 스케일링할 때는, 워크로드가 관리하는 레플리카 수를 늘리거나 줄일 수 있고, 혹은 레플리카 수는 그대로 둔 채 할당된
15+
리소스를 조정할 수 있다.
16+
17+
첫 번째 방법을 _수평 스케일링(horizontal scaling)_ , 두 번째 방법을 _수직 스케일링(vertical scaling)_
18+
이라고 부른다.
19+
20+
워크로드 스케일링은 사용 사례에 따라 수동 또는 자동으로 수행할 수 있다.
21+
22+
<!-- body -->
23+
24+
## 수동 워크로드 스케일링
25+
26+
쿠버네티스는 워크로드의 _수동 스케일링(manual scaling)_ 을 제공한다. 수평 스케일링은
27+
`kubectl` CLI을 사용해 수행할 수 있다.
28+
수직 스케일링의 경우, 워크로드의 리소스 정의를 _패치_ 해야한다.
29+
30+
아래는 두 방식의 예시이다.
31+
32+
- **수평 스케일링**: [복수의 앱 인스턴스를 구동하기](/ko/docs/tutorials/kubernetes-basics/scale/scale-intro/)
33+
- **수직 스케일링**: [컨테이너에 할당된 CPU와 메모리 리소스 크기 조정하기](/docs/tasks/configure-pod-container/resize-container-resources)
34+
35+
## 자동 워크로드 스케일링
36+
37+
쿠버네티스는 워크로드의 _자동 스케일링(automatic scaling)_ 도 제공하는데, 이 페이지는 이를 중점적으로 다룬다.
38+
39+
쿠버네티스에서 _오토스케일링_ 라는 개념은 여러개의 파드를 관리하는 오브젝트를(예를 들어,
40+
{{< glossary_tooltip text="디플로이먼트" term_id="deployment" >}})
41+
자동으로 업데이트하는 것을 말한다.
42+
43+
### 수평 워크로드 스케일링
44+
45+
쿠버네티스에서, _HorizontalPodAutoscaler_(HPA)을 이용하여 워크로드를 수평으로 자동 스케일링할 수 있다.
46+
47+
이것은 쿠버네티스 API 리소스와 {{< glossary_tooltip text="컨트롤러" term_id="controller" >}}로
48+
구현되어있고, 주기적으로 워크로드의 {{< glossary_tooltip text="레플리카" term_id="replica" >}}의 수를 조정하여
49+
CPU나 메모리 사용량과 같은 관측된 리소스 사용률에 맞춘다.
50+
51+
[HorizontalPodAutoscaler 연습](/ko/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough)에서 디플로이먼트의 HorizontalPodAutoscaler를 구성해볼 수 있다.
52+
53+
### 수직 워크로드 스케일링
54+
55+
{{< feature-state for_k8s_version="v1.25" state="stable" >}}
56+
57+
_VerticalPodAutoscaler_ (VPA)를 이용하여 워크로드를 수직으로 자동 스케일링할 수 있다.
58+
HPA와 달리, VPA는 쿠버네티스에서 기본적으로 제공하지는 않지만, 별도의
59+
[Github 프로젝트](https://github.com/kubernetes/autoscaler/tree/9f87b78df0f1d6e142234bb32e8acbd71295585a/vertical-pod-autoscaler)에서 확인할 수 있다.
60+
61+
설치 후에는, {{< glossary_tooltip text="CustomResourceDefinitions" term_id="customresourcedefinition" >}}(CRDs) 을 생성하여,
62+
워크로드가 관리하는 레플리카들의 리소스를 _어떻게_, _언제_ 스케일링 할 것인지를 정의한다.
63+
64+
{{< note >}}
65+
VPA를 사용하려면 클러스터에
66+
[Metrics Server](https://github.com/kubernetes-sigs/metrics-server)를 설치해야한다.
67+
{{< /note >}}
68+
69+
현재, VPA는 다음 네 가지 모드로 작동된다.
70+
71+
{{< table caption="Different modes of the VPA" >}}
72+
모드 | 설명
73+
:----|:-----------
74+
`Auto` | 현재는 `Recreate`모드와 동일하다. 향후에 인플레이스(in-place) 업데이트로 변경될 수 있다.
75+
`Recreate` | VPA는 파드가 생성될 때 리소스 요청(resource request)를 할당하며, 기존 파드의 리소스 요청이 새로운 권장 값과 상당히 다르다면, 파드를 축출(evitct)하여 이를 업데이트한다.
76+
`Initial` | VPA는 파드가 생성될 때만 리소스 요청을 할당하고, 이후에는 변경하지 않는다.
77+
`Off` | VPA가 파드의 리소스 요청 값을 자동으로 바꾸지 않는다. 권장 값은 계산되며 VPA 오브젝트에서 확인할 수 있다.
78+
{{< /table >}}
79+
80+
### 수직 인플레이스(In-place) 파드 스케일링
81+
82+
{{< feature-state feature_gate_name="InPlacePodVerticalScaling" >}}
83+
84+
쿠버네티스 {{< skew currentVersion >}} 버전에서는 인플레이스로 파드를 리사이징하는 기능은 지원하지 않지만,
85+
현재 통합이 진행 중이다.
86+
수동으로 파드를 인플레이스 리사이징 하려면, [컨테이너 리소스 인플레이스 리사이즈](/docs/tasks/configure-pod-container/resize-container-resources/)를 참고하자.
87+
88+
### 클러스터 크기 기반 오토스케일링
89+
90+
클러스터의 크기에 따라 스케일링이 필요한 워크로드(예: `cluster-dns`또는 시스템 컴포넌트)의 경우,
91+
[_Cluster Proportional Autoscaler_](https://github.com/kubernetes-sigs/cluster-proportional-autoscaler)
92+
사용할 수 있다.
93+
VPA와 마찬가지로, 쿠버네티스 코어에 포함되지 않으나,
94+
Github의 별도 프로젝트에서 호스팅된다.
95+
96+
Cluster Proportional Autoscaler는 스케줄 가능한 {{< glossary_tooltip text="노드" term_id="node" >}}의 수와 코어 수를 감시하고,
97+
이에 맞춰 대상 워크로드의 레플리카의 수를 스케일링한다.
98+
99+
만약 레플리카의 수는 그대로 유지하면서, 클러스터의 크기에 따라 워크로드를 수직으로 스케일링하고자 한다면,
100+
[_Cluster Proportional Vertical Autoscaler_](https://github.com/kubernetes-sigs/cluster-proportional-vertical-autoscaler)를 사용할 수 있다.
101+
이 프로젝트는 **현재 베타**상태이고, Github에서 확인할 수 있다.
102+
103+
Cluster Proportional Autoscaler가 워크로드의 레플리카 수를 스케일링한다면,
104+
Cluster Proportional Vertical Autoscaler는 워크로드
105+
(예: 디플로이먼트나 데몬셋)의 리소스 요청을 클러스터의 노드 수 및/또는 코어 수를 기반으로 조정한다.
106+
107+
### 이벤트 기반 오토스케일링
108+
109+
워크로드를 이벤트를 기반으로 스케일링할 수 있는데, 그 예로
110+
[_Kubernetes Event Driven Autoscaler_ (**KEDA**)](https://keda.sh/)가 있다.
111+
112+
KEDA는 CNCF-graduated 프로젝트이고 처리해야 할 이벤트의 수(예: 큐에 존재하는 메세지의 양)를
113+
기반으로 워크로드를 스케일링할 수 있게 한다. 다양한
114+
이벤트 소스에 대응할 수 있는 폭넓은 어댑터들이 제공된다.
115+
116+
### 스케줄 기반 오토스케일링
117+
118+
워크로드를 스케일링하는 또 다른 전략은 스케일링을 수행하는 **스케줄**을 설정하는 것인데, 예를 들어
119+
비혼잡 시간대에 리소스 사용량을 줄이기 위해 사용할 수 있다.
120+
121+
이벤트 기반 오토스케일링과 비슷하게, 이 기능도 KEDA와 [`Cron` scaler](https://keda.sh/docs/latest/scalers/cron/)
122+
함께 사용하여 구현할 수 있다.
123+
`Cron` scaler는 워크로드를 확장하거나 축소할 시각(과 시간대)을 정의할 수 있다.
124+
125+
## 클러스터 인프라 스케일링
126+
127+
만약 워크로드 스케일링만으로 충분하지 않다면, 클러스터 인프라 자체를 스케일링할 수 있다.
128+
129+
클러스터 인프라를 스케일링하는 것은 일반적으로 {{< glossary_tooltip text="노드" term_id="node" >}}를 추가하거나 삭제하는 것을 의미한다.
130+
자세한 내용은 [노드 오토스케일링](/docs/concepts/cluster-administration/node-autoscaling/)
131+
참고하자.
132+
133+
## {{% heading "whatsnext" %}}
134+
135+
- 수평 스케일링에 대해 더 알아보기
136+
- [스테이트풀셋(StatefulSet) 확장하기](/ko/docs/tasks/run-application/scale-stateful-set/)
137+
- [HorizontalPodAutoscaler 연습](/ko/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/)
138+
- [컨테이너 리소스 인플레이스 리사이즈](/docs/tasks/configure-pod-container/resize-container-resources/)
139+
- [클러스터에서 DNS 서비스 오토스케일](/ko/docs/tasks/administer-cluster/dns-horizontal-autoscaling/)
140+
- [노드 오토스케일링](/docs/concepts/cluster-administration/node-autoscaling/) 알아보기

0 commit comments

Comments
 (0)