ComputeClasses를 사용하여 Google Kubernetes Engine (GKE)에서 포드를 실행하는 노드를 만드는 데 사용하는 노드 속성 및 자동 확장 설정 집합을 정의할 수 있습니다. 이 페이지에서는 ComputeClass의 작동 방식, 사용 사례 및 이점, 사용 가능한 ComputeClass 유형을 설명합니다.
이 정보는 다음 사용자를 대상으로 합니다.
- 클러스터 인프라 관리와 관련된 오버헤드를 줄이려는 클라우드 설계자 및 플랫폼 엔지니어
- 기본 인프라에 대해 생각하지 않고 워크로드 운영에 집중하려는 앱 운영자 및 SRE
ComputeClass 및 클러스터 자동 확장 정보
ComputeClass는 GKE 클러스터에 Kubernetes API 객체로 존재하는 노드 속성 및 자동 확장 설정의 집합입니다. 배포하는 모든 Kubernetes 워크로드에서 ComputeClass를 선택할 수 있습니다. GKE 클러스터 자동 확장 처리에서는 ComputeClass의 속성을 사용하여 워크로드의 노드를 만듭니다.
플랫폼 엔지니어는 ComputeClasses를 사용하여 다양한 유형의 워크로드에 맞게 인프라를 구성할 수 있으므로 모든 새 노드가 애플리케이션의 특정 요구사항에 맞게 최적화됩니다. ComputeClass는 GKE 자동 확장의 속도와 유연성을 개선하고 클러스터 전반에서 인프라 옵션을 구성하는 선언적 방법을 제공합니다. 자세한 내용은 ComputeClasses 사용의 이점 섹션을 참고하세요.
다음과 같은 특정 GKE 기능은 ComputeClass에서만 사용할 수 있습니다.
- 대체 컴퓨팅 우선순위: ComputeClass에서 환경설정에 따라 우선순위가 지정된 인프라 구성을 여러 개 정의합니다. 확장하는 동안 가장 선호되는 구성을 사용할 수 없는 경우 GKE는 다음 구성으로 대체됩니다.
- 우선순위가 더 높은 노드로의 활성 마이그레이션: 구성된 경우 GKE는 대체 우선순위 목록에서 더 낮은 노드를 시간 경과에 따라 해당 목록에서 더 높은 노드로 자동으로 대체합니다. 따라서 워크로드를 만들 때 해당 하드웨어를 사용할 수 없었더라도 포드가 결국 ComputeClass에서 가장 선호되는 노드에서 실행됩니다.
- GKE Standard의 Autopilot: Standard 클러스터에서도 컨테이너에 최적화된 컴퓨팅 플랫폼, 포드 기반 결제와 같은 Autopilot 기능을 사용하려면 GKE Autopilot 모드에서 워크로드를 실행하세요. GKE는 이러한 노드와 워크로드를 관리하여 모든 클러스터에서 Autopilot 모드의 이점을 제공합니다.
ComputeClasses의 이점
ComputeClass는 플랫폼 관리자와 운영자에게 다음과 같은 이점을 제공합니다.
- 리소스 확보 가능성 개선: ComputeClass는 GKE 클러스터 자동 확장 처리의 기능을 확장합니다. 대체 우선순위 및 노드 통합 매개변수와 같은 ComputeClass 기능을 사용하면 포드가 보류 상태로 멈출 위험을 줄이고 노드 확장에 사용할 수 있는 옵션의 범위를 늘릴 수 있습니다.
- 선언적 플랫폼 수준 구성: ComputeClass를 사용하면 플랫폼 엔지니어가 다양한 워크로드 유형의 노드 구성을 선언적으로 설명할 수 있습니다. GKE 자동 확장 기능은 노드 및 노드 풀 생성과 구성을 관리합니다. ComputeClasses를 CI/CD 파이프라인에 통합하여 플랫폼 전반에서 프로비저닝된 인프라의 일관성을 유지할 수 있습니다.
- 관리 오버헤드 감소: ComputeClasses는 대규모 인프라 및 워크로드 관리의 복잡성을 줄입니다. 플랫폼 엔지니어는 인프라 클래스를 선언하고 앱 운영자는 워크로드에서 관련 클래스를 선택합니다. GKE는 확장, 노드 하드웨어 구성을 관리하고 taint, 톨러레이션, 라벨을 적용합니다.
ComputeClass 커스텀 리소스 정보
ComputeClass는 Kubernetes 커스텀 리소스입니다. 매니페스트 파일에서 ComputeClass 사양을 정의하고 클러스터에서 만들 수 있습니다. 배포 및 서비스와 같은 Kubernetes 워크로드 리소스를 정의하고 만드는 방식과 유사합니다.
다음 예시 매니페스트는 n4
이라는 ComputeClass를 정의합니다.
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: n4
spec:
nodePoolAutoCreation:
enabled: true
priorities:
- machineFamily: n4
- machineFamily: n2
whenUnsatisfiable: DoNotScaleUp
포드가 이 ComputeClass를 선택하면 GKE는 새 노드를 만들 때 다음을 실행합니다.
- GKE는 N4 머신 시리즈를 사용하는 노드를 만듭니다.
- N4 머신 시리즈를 사용할 수 없는 경우 GKE는 대신 N2 머신 시리즈를 사용하는 노드를 만듭니다.
- N2 머신 시리즈를 사용할 수 없는 경우 GKE는 리소스를 사용할 수 있게 될 때까지 기다려 포드를 예약합니다.
하드웨어 리소스를 사용할 수 없는 경우 가속기, 노드 시스템 설정, 노드 위치, GKE의 대체 동작 등 ComputeClasses를 사용하여 노드의 다양한 설정을 제어할 수 있습니다. ComputeClass에 사용할 수 있는 모든 구성에 대한 자세한 내용은 ComputeClass CustomResourceDefinition을 참고하세요.
워크로드의 ComputeClass 선택
GKE 워크로드에 ComputeClass를 사용하려면 cloud.google.com/compute-class
라벨의 노드 선택기를 사용하여 워크로드 매니페스트에서 ComputeClass를 선택합니다.
다음 예시 배포 매니페스트는 ComputeClass를 선택합니다.
COMPUTE_CLASS
을 클러스터에 있는 ComputeClass의 이름으로 바꿉니다. 예를 들어 ComputeClass 커스텀 리소스 정보 섹션의 n4
ComputeClass 또는 autopilot
내장 ComputeClass를 지정할 수 있습니다.
워크로드 사양의 노드 구성
GKE Autopilot 클러스터와 GKE Standard의 노드 자동 프로비저닝을 사용하면 포드에서 노드 선택기를 사용하여 머신 계열, Spot VM, GPU 또는 TPU와 같은 특정 속성이 있는 노드를 만들 수 있습니다. ComputeClass를 사용하면 모든 워크로드에 개별 선택기를 추가하는 대신 이러한 요구사항을 중앙에서 정의할 수 있습니다.
기본적으로 ComputeClasses 적용 정보
특정 ComputeClass를 선택하지 않는 포드에 기본적으로 ComputeClass를 적용하도록 GKE를 구성할 수 있습니다. 특정 네임스페이스 또는 전체 클러스터의 기본 ComputeClass를 정의할 수 있습니다. 기본 클래스로 클러스터 또는 네임스페이스를 구성하는 방법에 관한 자세한 내용은 기본적으로 ComputeClass를 포드에 적용을 참고하세요.
다음 표에서는 네임스페이스 또는 클러스터의 기본값으로 ComputeClass를 설정할 때의 효과를 설명합니다.
기본 ComputeClass의 효과 | |
---|---|
네임스페이스 수준 기본값 |
|
클러스터 수준 기본값 |
|
GKE가 네임스페이스 수준 기본 ComputeClass를 포드에 적용하는 경우 GKE가 네임스페이스 수준 기본 클래스의 노드 선택기를 포드에 추가하므로 해당 포드는 클러스터 수준 기본 ComputeClass를 활성화하지 않습니다.
클러스터 수준 기본 ComputeClasses
클러스터 수준 기본 ComputeClass를 사용 설정하면 default
라는 ComputeClass
객체가 클러스터의 노드 자동 확장 규칙을 정의합니다. 클러스터에 이미 default
라는 이름의 ComputeClass가 있는 경우 GKE는 클러스터에 해당 ComputeClass 구성을 사용합니다. 클러스터에 default
라는 맞춤 ComputeClass가 없으면 GKE는 다음 ComputeClass
규칙이 적용되는 것처럼 동작합니다.
spec:
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
기본적으로 GKE는 대체 동작을 적용하지 않으며 자동 확장된 노드의 구성을 변경하지 않습니다. 자동 확장된 노드에 특정 속성을 기본적으로 적용하려면 default
라는 맞춤 ComputeClass를 배포해야 합니다.
기본 클러스터 수준 컴퓨팅 클래스를 구성할 때는 다음 사항을 고려하세요.
- 포드가
Pending
상태에서 멈추지 않도록 하려면spec.whenUnsatisfiable
필드를ScaleUpAnyway
로 설정합니다. 이 값을 사용하면 포드에서 클러스터 수준 기본 클래스의 우선순위 규칙에 없는 Compute Engine 머신 패밀리를 요청하더라도 GKE에서 노드를 만들 수 있습니다. 이러한 포드가 기본 ComputeClass에 있는 머신 계열을 사용하도록 강제하려면 이 필드를DoNotScaleUp
로 설정합니다. default
ComputeClass에 대한 변경사항을 제한하려면 RBAC ClusterRole을 사용하여default
라는ComputeClass
리소스에 대한 update, patch, delete, create 작업을 제한합니다.- 클러스터 자동 확장 처리기의 기본 노드 통합 매개변수를 변경하려면 ComputeClass 사양에서
spec.autoscalingPolicy
필드를 사용하세요. 클러스터 수준 기본 ComputeClass에서 이 필드에 지정한 매개변수는 클러스터의 모든 노드에 적용됩니다. 자세한 내용은 노드 통합을 위한 자동 확장 매개변수 설정을 참고하세요.
다음 단계
- 기본 제공 ComputeClass 알아보기
- 맞춤 ComputeClass 알아보기
- ComputeClass CustomResourceDefinition 읽기
- ComputeClass 배포 및 워크로드에서 선택