이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
관리형 노드 그룹과 함께 웜 풀을 사용하여 부팅 시간이 긴 애플리케이션의 지연 시간 단축
애플리케이션의 초기화 또는 부팅 시간이 길면 스케일 아웃 이벤트로 인해 지연이 발생할 수 있습니다. 새 노드에 대해 포드를 예약하려면 새 노드가 클러스터를 완전히 부팅하고 조인해야 하기 때문입니다. 이러한 지연 시간은 트래픽 스파이크 또는 빠른 규모 조정 이벤트 발생 시 애플리케이션 가용성에 영향을 미칠 수 있습니다. 웜 풀은 이미 부팅 프로세스를 완료한 사전 초기화된 EC2 인스턴스 풀을 유지 관리하여 이 문제를 해결합니다. 스케일 아웃 이벤트 중에 인스턴스는 웜 풀에서 클러스터로 직접 이동하여, 시간이 많이 걸리는 초기화 단계를 우회하고 새 용량을 사용할 수 있는 데 걸리는 시간을 크게 줄입니다. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서의 웜 풀을 사용하여 부팅 시간이 긴 애플리케이션의 지연 시간 단축을 참조하세요.
Amazon EKS 관리형 노드 그룹은 Amazon EC2 Auto Scaling 웜 풀을 지원합니다. 웜 풀은 스케일 아웃 이벤트 발생 시 클러스터에 신속히 조인할 수 있는 Auto Scaling 그룹과 함께 사전 초기화된 EC2 인스턴스를 유지합니다. 웜 풀의 인스턴스는 이미 부팅 초기화 프로세스를 완료했으며 Stopped, Running 또는 Hibernated 상태로 유지될 수 있습니다.
Amazon EKS는 AWSServiceRoleForAmazonEKSNodegroup 서비스 연결 역할을 사용해 노드 그룹 수명 주기 전반에 걸쳐 웜 풀을 관리하여 웜 풀 리소스를 생성, 업데이트, 삭제합니다.
작동 방식
웜 풀을 구성하면 Amazon EKS에서는 노드 그룹의 Auto Scaling 그룹에 연결된 EC2 Auto Scaling 웜 풀을 생성합니다. 인스턴스가 웜 풀로 시작되고, 부팅 초기화 프로세스를 완료하며, 필요할 때까지 구성된 상태(Running, Stopped 또는 Hibernated)로 유지됩니다. 스케일 아웃 이벤트 발생 시 인스턴스는 웜 풀에서 Auto Scaling 그룹으로 이동하고, Amazon EKS 초기화 프로세스를 완료하여 클러스터에 조인한 다음, 포드 예약에 사용할 수 있게 됩니다. 인스턴스 재사용을 활성화하면 스케일 인 이벤트 발생 시 인스턴스가 웜 풀로 돌아갈 수 있습니다.
중요
항상 create-nodegroup 또는 update-nodegroup-config를 사용하여 Amazon EKS API를 통해 웜 풀을 구성합니다. EC2 Auto Scaling API를 사용하여 웜 풀 설정을 수동으로 수정하지 마세요. 이렇게 할 경우 리소스의 Amazon EKS 관리와 충돌할 수 있기 때문입니다.
고려 사항
중요
웜 풀을 구성하기 전에 Amazon EC2 Auto Scaling에서 Amazon EC2 Auto Scaling을 위한 웜 풀의 사전 조건 및 제한 사항을 검토하세요. 일부 인스턴스 유형, AMI 또는 구성은 지원되지 않습니다.
-
IAM 권한 -
AWSServiceRoleForAmazonEKSNodegroup서비스 연결 역할(첫 번째 관리형 노드 그룹을 사용하여 자동으로 생성됨)에는 필요한 웜 풀 관리 권한이 포함됩니다. -
AMI 제한 - 웜 풀은 사용자 지정 AMI를 지원하지 않습니다. Amazon EKS 최적화 AMI를 사용해야 합니다.
-
Bottlerocket 제한 사항 - Bottlerocket AMI를 사용하는 경우
Hibernated풀 상태가 지원되지 않습니다.Stopped또는Running풀 상태만 사용합니다. 또한 이reuseOnScaleIn기능은 Bottlerocket AMI에서 지원되지 않습니다. -
최대 절전 모드 지원 -
Hibernated풀 상태는 특정 인스턴스 유형에서만 지원됩니다. 지원되는 인스턴스 유형은 Amazon EC2 사용 설명서의 최대 절전 모드 사전 조건을 참조하세요. -
비용 영향 - 필요하지 않은 경우에 웜 풀을 생성하면 불필요한 비용이 발생할 수 있습니다.
-
용량 계획 - 규모 조정 패턴을 기반으로 웜 풀의 크기를 조정하여 비용과 가용성의 균형을 맞출 수 있습니다. 예상 피크 용량의 10~20%로 시작합니다.
-
VPC 네트워킹 - Auto Scaling 그룹 및 웜 풀 인스턴스 양쪽 모두에 대해 충분한 IP 주소를 보장합니다.
웜 풀 구성
새 관리형 노드 그룹을 생성할 때 웜 풀을 구성하거나, 기존 관리형 노드 그룹을 업데이트하여 웜 풀 지원을 추가할 수 있습니다.
구성 파라미터
-
enabled – (부울) 관리형 노드 그룹에 웜 풀을 연결하겠다는 의도를 나타냅니다. 웜 풀 지원을 활성화하는 데 필요합니다.
-
maxGroupPreparedCapacity – (정수) 웜 풀과 Auto Scaling 그룹의 최대 총 인스턴스 수를 합산한 것입니다.
-
minSize – (정수) 웜 풀에서 유지할 최소 인스턴스 수입니다. 기본값:
0. -
poolState – (문자열) 웜 풀 인스턴스의 상태입니다. 기본값:
Stopped. -
reuseOnScaleIn – (부울) 스케일 인 이벤트 발생 시 인스턴스를 종료하는 대신 인스턴스가 웜 풀로 돌아가는지 여부를 나타냅니다. 기본값:
false. Bottlerocket AMI는 지원되지 않습니다.
AWS CLI 사용
관리형 노드 그룹을 생성할 때 웜 풀을 구성하거나, 기존 노드 그룹에 웜 풀을 추가할 수 있습니다.
웜 풀을 사용하여 노드 그룹 생성
aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --node-role arn:aws:iam::111122223333:role/AmazonEKSNodeRole \ --subnets subnet-12345678 subnet-87654321 \ --region us-east-1 \ --scaling-config minSize=2,maxSize=10,desiredSize=3 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true
기존 노드 그룹에 웜 풀 추가
aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true
구성 업데이트
update-nodegroup-config를 사용하여 언제든지 웜 풀 설정을 업데이트할 수 있습니다. 기존 웜 풀 인스턴스는 즉시 영향을 받지 않습니다. 업데이트 후 웜 풀에 들어오는 인스턴스에 새 설정이 적용됩니다.
aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=10,minSize=3,poolState=Running,reuseOnScaleIn=true
노드 그룹에 연결된 웜 풀을 비활성화하려면 enabled=false를 설정합니다.
aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=false
추가 리소스
-
자세한 설명은 Amazon EC2 Auto Scaling 사용자 가이드의 Amazon EC2 Auto Scaling을 위한 웜 풀을 참조하세요.