오토스케일은 CPU와 메모리 사용률에 따라 파드나 노드의 수를 자동으로 늘리고 줄이는 기능을 말한다. 특히 퍼블릭 클라우드에서는 노드의 개수, 이용 시간에 따라 비용이 달라지기 때문에 비용 최적화와도 연결된다.
쿠버네티스 오토스케일을 개발하는 여러 서브 프로젝트 중에서 특히 주목할 만한 것이 다음 두개이다.
- 수평 파드 오토스케일러(HPA)
- 파드의 CPU 사용률을 감시하면서 파드의 레플리카 수를 늘리거나 줄인다. 한편 CA는 필요할 때 노드를 자동으로 추가한다.
- 파드의 개수를 조절하지만 새로운 노드를 추가하지는 않는다.
- 클러스터 오토스케일러(CA)
- 클라우드의 API와 연동하여 노드를 늘리거나 줄일 수 있다.
오토스케일링 작업
HPA는 루프를 돌면서 대상이 되는 파드의 CPU 사용률을 정기적으로 수집한다. 그리고 파드의 CPU사용률의 평균을 목표값이 되도록 레플리카 수를 조절한다. 이때 최소와 최대 레플리카 수를 지정할 수 있다.
매니페스트에서 템플릿의 스펙에 CPU 요구 시간을 지정할 수 있다. 이는 초당 CPU 요구 시간인데 200m을 지정하면 ‘200밀리초 / 1000밀리초' 이기 때문에 CPU사용률은 20%가 된다. HPA의 목표가 50%이므로, 각 파드의 CPU 사용 시간이 100밀리초가 되도록 파드의 개수를 조절한다. 밀리초 단위로 조정하는게 좀 낯설다.. CPU 사용률이 개별 파드 기준인건가?
정리
- 파드 수를 부하메 맞게 자동으로 조절하는 기능으로 수평 파드 오토스케일러를 사용할 수 있다.
- HPA는 CPU의 평균 사용률과 목표 사용률이 일치하도록 레플리카 수를 (HPA)조절한다
- 스케일 업은 이전 동작에서 3분 뒤 발동되고, 스케일 다운은 5분 뒤에 발동된다.
- HPA가 목표로 하는 CPU 사용률은 파드의 실제 CPU 사용 시간을 매니페스트에 기재한 CPU 요구 시간으로 나누어서 구한다.
- HPA는 파드의 개수만 조절할 수 있기 때문에, 노드의 개수까지 조절하고 싶은 경우에는 클러스터 오토스케일러를 고려한다. 단, 이 기능은 클라우드 프로바이더(CA)의 기능 지원이 필수적이다.
Loading Comments...