본문으로 건너뛰기

Karpenter

시작하기 전에

이 섹션을 위한 환경을 준비합니다:

~$prepare-environment autoscaling/compute/karpenter

이 명령은 다음과 같은 변경사항을 랩 환경에 적용합니다:

  • Karpenter에 필요한 다양한 IAM 역할 및 기타 AWS 리소스를 설치합니다

이러한 변경사항을 적용하는 Terraform은 여기에서 확인할 수 있습니다.

이 실습에서는 Kubernetes를 위해 구축된 오픈소스 오토스케일링 프로젝트인 Karpenter를 살펴봅니다. Karpenter는 스케줄링할 수 없는 Pod의 총 리소스 요청을 관찰하고 노드를 시작하고 종료하는 결정을 내려 스케줄링 지연 시간을 최소화함으로써, 몇 분이 아닌 몇 초 안에 애플리케이션의 요구사항에 맞는 적절한 컴퓨팅 리소스를 제공하도록 설계되었습니다.

Karpenter의 목표는 Kubernetes 클러스터에서 워크로드를 실행하는 효율성과 비용을 개선하는 것입니다. Karpenter는 다음과 같이 작동합니다:

  • Kubernetes 스케줄러가 스케줄링 불가능으로 표시한 Pod를 감시합니다
  • Pod가 요청하는 스케줄링 제약 조건(리소스 요청, 노드 셀렉터, 어피니티, 톨러레이션, 토폴로지 분산 제약 조건)을 평가합니다
  • Pod의 요구사항을 충족하는 노드를 프로비저닝합니다
  • 새 노드에서 실행되도록 Pod를 스케줄링합니다
  • 노드가 더 이상 필요하지 않으면 노드를 제거합니다