EKS 클러스터 Karpenter 적용
코드너리 | 2022. 11. 28
쿠버네티스 환경
사용된 기술:
기존 문제점:
- 카카오스타일 역시 대부분의 주요 마이크로서비스가 EKS 상에서 운영되고 있고, 유저들이 많이 사용하는 시간대 패턴이 있다 보니 하루에도 몇 번씩 Node 가 늘어났다 줄어드는 경험을 하게 됩니다. AWS 의 경우는 AutoScaling Group(ASG) 을 통해 CA 기능을 구현하기 때문에 Node 추가에 생각보다 오랜 시간이 걸립니다.
- 또한, 워크로드별 인스턴스 요구사항이 달라 여러 관리형 Node Group 을 도입해야 한다면 여러 벌의 ASG 을 운영해야 하는 등 운영 부담이 늘어납니다.
카펜터 동작 방식:
- Horizontal Pod AutoScaler(HPA) 에 의한 Pod의 수평적 확장이 한계에 다다르면, Pod 는 적절한 Node 를 배정받지 못하고 pending 상태에 빠집니다.
- 이때 Karpenter 는 지속해서 unscheduled Pod 를 관찰하고 있다가, 새로운 Node 추가를 결정하고 직접 배포합니다.
- 추가된 Node가 Ready 상태가 되면 Karpenter 는 kube-scheduler 를 대신하여 pod 의 Node binding 요청도 수행합니다.
위와 같이 Karpenter 는 기존 CA 에 비해 훨씬 단순한 구조를 가지고 있으며 클러스터 확장 시 일어나는 많은 부분을 Karpenter 에서 직접 처리해서 빠르게 확장을 처리할 수 있도록 설계되었습니다. 모든 Worker Node 는 Karpenter 에 의해 lifecycle 이 결정됩니다.
Karpenter 의 장점
- 운영 부담 절감
- 신속한 Node 추가와 제거
- 자동 Node 롤링
- 다양한 인스턴스 타입을 쉽게 적용