AWS용 GKE에서 노드 풀을 만들려면 다음 리소스를 제공해야 합니다.
- 노드 풀을 만들 기존 AWS 클러스터의 이름
- 노드 풀 VM의 IAM 인스턴스 프로필
- 노드 풀 VM이 실행될 서브넷
노드에 SSH로 액세스하려면 EC2 키 쌍 만들기를 수행하면 됩니다.
표준 노드 풀 만들기
이러한 리소스를 사용할 수 있게 되면 다음 명령어로 노드 풀을 만들 수 있습니다.
gcloud container aws node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--instance-type INSTANCE_TYPE \
--root-volume-size ROOT_VOLUME_SIZE \
--iam-instance-profile NODEPOOL_PROFILE \
--node-version NODE_VERSION \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--max-pods-per-node MAX_PODS_PER_NODE \
--location GOOGLE_CLOUD_LOCATION \
--subnet-id NODEPOOL_SUBNET \
--ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--tags "Name=CLUSTER_NAME-NODE_POOL_NAME"
다음을 바꿉니다.
NODE_POOL_NAME
: 노드 풀에 대해 선택한 이름CLUSTER_NAME
: 노드 풀을 연결할 클러스터의 이름INSTANCE_TYPE
: 이 노드 풀에 원하는 AWS 머신 인스턴스 유형(예:m5.large
)ROOT_VOLUME_SIZE
: 각 노드의 루트 볼륨에 원하는 크기(Gb)NODEPOOL_PROFILE
: 노드 풀 VM의 IAM 인스턴스 프로필 IAM 인스턴스 프로필 업데이트 방법에 대한 자세한 내용은 AWS IAM 인스턴스 프로필 업데이트를 참조하세요.NODE_VERSION
: 노드 풀의 각 노드에 설치할 Kubernetes 버전(예: '1.29.3-gke.600')MIN_NODES
: 노드 풀에 포함할 수 있는 최소 노드 수MAX_NODES
: 노드 풀에 포함할 수 있는 최대 노드 수MAX_PODS_PER_NODE
: 풀의 단일 노드에 생성할 수 있는 최대 포드 수GOOGLE_CLOUD_LOCATION
: 이 노드 풀이 관리될 Google Cloud 위치의 이름NODEPOOL_SUBNET
: 노드 풀이 실행될 서브넷의 ID입니다.- 클러스터의 포드/서비스 IP 범위와 노드 풀 서브넷 네트워크 간에는 겹치지 않아야 합니다. 클러스터의 포드 및 서비스 IP 범위 선택에 대한 자세한 내용은 클러스터의 CIDR 범위 선택을 참조하세요.
- 이 서브넷이 VPC 기본 CIDR 블록 외부에 있으면 몇 가지 추가 단계가 필요합니다. 자세한 내용은 보안 그룹을 참조하세요.
SSH_KEY_PAIR_NAME
: SSH 액세스를 위해 생성된 AWS SSH 키 쌍의 이름입니다(선택사항).CONFIG_KMS_KEY_ARN
: 사용자 데이터를 암호화하는 AWS KMS 키의 Amazon 리소스 이름(ARN)입니다.
있는 경우 --tags
매개변수는 노드 풀에 있는 모든 노드에 지정된 태그를 적용합니다. 이 예시에서는 풀의 모든 노드에 노드가 속한 클러스터와 노드 풀의 이름으로 태그를 지정합니다.
Spot 인스턴스 노드 풀
AWS용 GKE는 미리보기 기능으로 AWS Spot 인스턴스 노드 풀을 지원합니다. Spot 인스턴스 노드 풀은 AWS에서 더 저렴한 비용으로 제공되는 Amazon EC2 Spot 인스턴스의 풀입니다.
스테이트리스(Stateless), 내결함성, 가변형 애플리케이션의 경우 Spot 인스턴스로 비용을 절감할 수 있습니다. 하지만 유연하지 않거나, 스테이트풀(Stateful)이거나, 내결함성이 없거나, 인스턴스 노드 간에 긴밀하게 결합된 워크로드에는 적합하지 않습니다. Spot 인스턴스는 EC2에서 용량이 다시 필요할 때 Amazon EC2에 의해 중단될 수 있으므로 Spot 시장의 변동성에 영향을 받습니다. 워크로드 용량을 보장해야 하고 간헐적인 사용 불가 기간을 감당할 수 없는 경우 Spot 인스턴스 노드 풀 대신 표준 노드 풀을 선택하세요.
AWS용 GKE는 용량 가용성이 가장 높은 Spot 인스턴스 풀을 선택하여 중단 위험을 최소화하는 데 집중하는 할당 전략을 사용합니다. 이 접근 방식은 이미지 및 미디어 렌더링이나 딥 러닝과 같이 중단 비용이 높은 워크로드에서 특히 유용합니다.
구체적으로, Spot 인스턴스 할당 전략의 설명과 같이 capacityOptimized
할당 전략이 구현되었습니다.
Spot 노드 풀 만들기
Spot 인스턴스 노드 풀을 만들려면 다음 명령어를 실행합니다.
gcloud container aws node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--spot-instance-types INSTANCE_TYPE_LIST \
--root-volume-size ROOT_VOLUME_SIZE \
--iam-instance-profile NODEPOOL_PROFILE \
--node-version NODE_VERSION \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--max-pods-per-node MAX_PODS_PER_NODE \
--location GOOGLE_CLOUD_LOCATION \
--subnet-id NODEPOOL_SUBNET \
--ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--tags "Name=CLUSTER_NAME-NODE_POOL_NAME"
다음을 바꿉니다.
- NODE_POOL_NAME: 이 노드 풀에 할당하려는 이름입니다.
- CLUSTER_NAME: 이 노드 풀을 연결하려는 클러스터의 이름입니다.
- INSTANCE_TYPE_LIST: AWS EC2 인스턴스 유형의 쉼표로 구분된 목록입니다. 노드 풀은 이러한 인스턴스 유형으로 스팟 인스턴스를 프로비저닝합니다. 인스턴스 유형의 CPU 아키텍처, CPU 수, 메모리 양이 동일해야 합니다. 예: 'c6g.large,c6gd.large,c6gn.large,c7g.large,t4g.medium'. Amazon EC2 인스턴스 선택기 도구를 사용하면 CPU 및 메모리 구성이 동일한 인스턴스 유형을 찾을 수 있습니다.
ROOT_VOLUME_SIZE
: 각 노드의 루트 볼륨에 원하는 크기(Gb)NODEPOOL_PROFILE
: 노드 풀 VM의 IAM 인스턴스 프로필NODE_VERSION
: 노드 풀의 각 노드에 설치할 Kubernetes 버전(예: '1.29.3-gke.600')MIN_NODES
: 노드 풀에 포함할 수 있는 최소 노드 수MAX_NODES
: 노드 풀에 포함할 수 있는 최대 노드 수MAX_PODS_PER_NODE
: 풀의 단일 노드에 생성할 수 있는 최대 포드 수GOOGLE_CLOUD_LOCATION
: 이 노드 풀이 관리될 Google Cloud 위치의 이름NODEPOOL_SUBNET
: 노드 풀이 실행될 서브넷의 ID입니다.- 클러스터의 포드/서비스 IP 범위와 노드 풀 서브넷 네트워크 간에는 겹치지 않아야 합니다. 클러스터의 포드 및 서비스 IP 범위 선택에 대한 자세한 내용은 클러스터의 CIDR 범위 선택을 참조하세요.
- 이 서브넷이 VPC 기본 CIDR 블록 외부에 있으면 몇 가지 추가 단계가 필요합니다. 자세한 내용은 보안 그룹을 참조하세요.
SSH_KEY_PAIR_NAME
: SSH 액세스를 위해 생성된 AWS SSH 키 쌍의 이름입니다(선택사항).CONFIG_KMS_KEY_ARN
: 사용자 데이터를 암호화하는 AWS KMS 키의 Amazon 리소스 이름(ARN)입니다.
INSTANCE_TYPE_LIST 필드에 여러 인스턴스 유형을 나열하는 것이 좋습니다. 이 권장사항이 중요한 이유는, 노드 풀이 단일 인스턴스 유형으로만 구성되면 원하는 가용성 영역에서 해당 인스턴스 유형을 사용할 수 없는 경우 노드 풀이 새 노드를 프로비저닝할 수 없기 때문입니다. 이로 인해 애플리케이션의 가용성이 저하되고 서비스 중단이 발생할 수 있습니다.
spot-instance-types
필드는 instance-type
필드와 상호 배타적입니다. 즉, 이러한 필드 중 하나만 제공할 수 있습니다.