<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Autoscaling on Joonlog</title><link>https://joonlog.github.io/tags/autoscaling/</link><description>Recent content in Autoscaling on Joonlog</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Fri, 22 Aug 2025 09:00:00 +0900</lastBuildDate><atom:link href="https://joonlog.github.io/tags/autoscaling/index.xml" rel="self" type="application/rss+xml"/><item><title>Kubernetes Autoscaling Overview</title><link>https://joonlog.github.io/p/kubernetes-autoscaling-overview/</link><pubDate>Fri, 22 Aug 2025 09:00:00 +0900</pubDate><guid>https://joonlog.github.io/p/kubernetes-autoscaling-overview/</guid><description>&lt;h2 id="오토스케일링-종류"&gt;오토스케일링 종류
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;클러스터 레벨 오토스케일링
&lt;ul&gt;
&lt;li&gt;노드 풀의 VM 개수를 오토스케일링&lt;/li&gt;
&lt;li&gt;클라우드 프로바이더와 같은 환경에서만 가능(EKS, GKE, AKS 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;파드 레벨 오토스케일링
&lt;ul&gt;
&lt;li&gt;파드의 개수를 오토스케일링&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="수평적-파드-오토스케일링hpa"&gt;수평적 파드 오토스케일링(HPA)
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;metrics-server 애드온이 필요
&lt;ul&gt;
&lt;li&gt;각 노드/파드가 사용하는 매트릭(CPU/MEM) 모니터링하고 데이터 수집하는 역할&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;동작원리&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HPA 컨트롤러가 metrics-server에서 Pod 매트릭을 주기적으로 수집하고, 사전에 설정한 임계치 조건을 만족하면 파드의 개수를 자동으로 조정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HPA 동작 조건&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;기본값 30초 간격으로 Pod 사용량을 점검&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;임계값을 초과하면 Pod scale out&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;확장된 이후 3분 대기, scale in은 확장 이후 5분 대기&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;예시&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myapp&lt;/code&gt; Deployment가 CPU 사용 평균 50%를 넘기면 Pod 개수가 늘어남&lt;/li&gt;
&lt;li&gt;만약 CPU 사용률이 낮아지면, 5분 이후 Pod 개수를 줄임&lt;/li&gt;
&lt;li&gt;Pod 개수는 최소 2개, 최대 10개 사이에서 조정됨&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apiVersion: autoscaling/v2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kind: HorizontalPodAutoscaler
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; name: myapp-hpa
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; scaleTargetRef:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; apiVersion: apps/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; kind: Deployment
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; name: myapp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; minReplicas: &lt;span class="m"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; maxReplicas: &lt;span class="m"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; metrics:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - type: Resource
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; resource:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; name: cpu
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; target:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; type: Utilization
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; averageUtilization: &lt;span class="m"&gt;50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;애플리케이션 지표 기반 오토스케일링도 가능하지만, prometheus와 같은 툴과 연동 필요&lt;/p&gt;</description></item></channel></rss>