Karpenter는 Kubernetes 클러스터의 애플리케이션을 처리하는 데 적합한 컴퓨팅 리소스만 자동으로 시작하고 빠르고 간단한 컴퓨팅 프로비저닝으로 클라우드를 최대한 활용할 수 있도록 설계 되었습니다.
Karpenter는 AWS로 구축된 유연한 오픈 소스의 고성능 Kubernetes 클러스터 오토스케일러입니다. 애플리케이션 로드의 변화에 대응하여 적절한 크기의 컴퓨팅 리소스를 신속하게 실행함으로써 애플리케이션 가용성과 클러스터 효율성을 개선할 수 있습니다. 또한 Karpenter는 애플리케이션의 요구 사항을 충족하는 컴퓨팅 리소스를 적시에 제공하며, 앞으로 클러스터의 컴퓨팅 리소스 공간을 자동으로 최적화하여 비용을 절감하고 성능을 개선 할수 있습니다.
Karpenter 이전에는 Kubernetes 사용자가 Amazon EC2 Auto Scaling 그룹과 Kubernetes Cluster Autoscaler를 사용하는 애플리케이션을 지원하기 위해 클러스터의 컴퓨팅 파워를 동적으로 조정해야 했습니다. EKS를 사용하는 많은 고객들이 Kubernetes Cluster Autoscaler를 사용하여 클러스터 Auto Scaling을 구성하기가 어렵고 구성할 수 있는 범위가 제한적인 것에 대해 개선을 요구했습니다
Karpenter가 클러스터에 설치되면 Karpenter는 예약되지 않은 포드의 전체 리소스 요청을 관찰하고 새 노드를 시작하고 종료하는 결정을 내림으로써 예약 대기 시간과 인프라 비용을 줄입니다. 이를 위해 Karpenter는 Kubernetes 클러스터 내의 이벤트를 관찰한 다음 Amazon EC2와 같은 기본 클라우드 공급자의 컴퓨팅 서비스로 명령을 전송합니다.
Karpenter는 Apache License 2.0을 통해 라이선스가 부여되는 오픈 소스 프로젝트입니다. 모든 주요 클라우드 공급업체 및 온프레미스 환경을 포함하여, 모든 환경에서 실행되는 모든 Kubernetes 클러스터와 함께 작동하도록 설계되었습니다.
상세한 내용은 아래 URL을 참조하기 바랍니다.
https://karpenter.sh/
다음은 ${CLUSTER_NAME}을 ${EKSCLUSTER_NAME}으로 변경한 Karpenter 설치 가이드입니다.
기존 EKS 클러스터에 Karpenter v1.2.1 설치 방법
✅ 기존 EKS 클러스터에 Karpenter 1.2.1 설치하는 방법
환경:
Karpenter version 1.2.1
기존 EKS 클러스터 사용 (eksworkshop)
AWS 리전: ap-northeast-2
기존 서브넷 및 보안 그룹 사용
1. Karpenter 설치를 위한 환경 변수 설정
# Karpenter 관련 정보
export KARPENTER_VERSION="1.2.1"
export KARPENTER_NAMESPACE=karpenter
export AWS_PARTITION="aws"
# IAM Role 이름 설정
export KARPENTER_NODE_ROLE="KarpenterNodeRole-${EKSCLUSTER_NAME}"
export KARPENTER_CONTROLLER_ROLE="${EKSCLUSTER_NAME}-karpenter"
export KARPENTER_IAM_POLICY="KarpenterControllerPolicy-${EKSCLUSTER_NAME}"
# 클러스터 엔드포인트 가져오기
export CLUSTER_ENDPOINT="$(aws eks describe-cluster --name ${EKSCLUSTER_NAME} --query "cluster.endpoint" --region ${AWS_REGION} --output text)"
export KARPENTER_IAM_ROLE_ARN="arn:${AWS_PARTITION}:iam::${ACCOUNT_ID}:role/${EKSCLUSTER_NAME}-karpenter"
echo "export CLUSTER_ENDPOINT=${CLUSTER_ENDPOINT}" | tee -a ~/.bash_profile
source ~/.bash_profile