노드 풀 자동 생성 구성

GKE가 대기 중인 포드의 노드 풀을 자동으로 만들도록 하면 Google Kubernetes Engine (GKE) 표준 클러스터에서 수동 인프라 관리의 양을 줄일 수 있습니다. 이 문서에서는 클러스터 및 워크로드의 노드 풀 자동 생성을 사용 설정하고, 자동 생성된 노드의 기본값을 설정하고, 몇 가지 일반적인 사용 사례의 자동 생성을 트리거하는 방법을 보여줍니다.

이 문서는 Standard 클러스터에서 인프라를 관리하고 워크로드를 배포하는 클러스터 관리자, 운영자, 개발자를 대상으로 합니다. 노드 풀 자동 생성의 작동 방식과 다양한 사용 설정 방법 (예: ComputeClass 및 클러스터 수준 노드 자동 프로비저닝)에 대한 자세한 내용은 노드 풀 자동 생성 정보를 참고하세요.

제한사항

노드 풀 자동 생성에는 다음과 같은 제한사항이 있습니다.

  • 클러스터 자동 확장 처리기의 모든 제한사항은 노드 풀 자동 생성에도 적용됩니다.
  • 총 노드 풀이 200개를 초과하는 클러스터의 경우 자동 확장 중에 지연 시간이 증가할 수 있습니다. 워크로드 분리 또는 여러 ComputeClass 사용과 같이 새 노드 풀 생성을 트리거하는 구성은 이 숫자를 늘립니다. 클러스터 한도에 대한 자세한 내용은 '대규모 클러스터 계획'의 한도 및 권장사항을 참고하세요.
  • 노드 자동 프로비저닝을 사용 설정할 때 클러스터에 설정한 리소스 제한은 GKE가 ComputeClass에 대해 만드는 노드 풀에도 적용됩니다.
  • 다음 설정은 ComputeClasses에서 지원되지 않습니다.
    • 일시 급증 업그레이드 또는 블루/그린 업그레이드
    • 노드 무결성 및 보안 부팅
  • 1.33.3-gke.1136000 이전 버전의 GKE에서 ComputeClass의 노드 풀 자동 생성을 사용 설정하려면 클러스터 수준 노드 자동 프로비저닝도 사용 설정해야 합니다. 이 제한사항은 GKE 버전 1.33.3-gke.1136000 이상에 적용되지 않습니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update 명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.

요구사항

노드 자동 프로비저닝 기능을 사용하여 모든 GKE 버전에서 전체 클러스터에 대해 노드 풀 자동 생성을 사용 설정할 수 있습니다. ComputeClass를 사용하여 워크로드 수준에서 노드 풀 자동 생성을 사용 설정하고 노드 자동 프로비저닝을 사용 설정하지 않으려면 클러스터가 다음 요구사항을 충족해야 합니다.

  • GKE 버전 1.33.3-gke.1136000 이상을 사용합니다.
  • 빠른 출시 채널을 사용합니다.

특정 노드 구성의 노드 풀 자동 생성을 트리거하려면 해당 버전 요구사항을 충족해야 합니다. 다양한 구성의 버전 지원에 대한 자세한 내용은 GKE 출시 노트 (새 기능) 또는 사용 사례에 대한 문서를 참고하세요.

워크로드 수준 자동 생성 사용 설정

ComputeClass를 사용하여 클러스터의 특정 워크로드에 대해 노드 풀 자동 생성을 사용 설정할 수 있습니다. ComputeClass 사양의 nodePoolAutoCreation 필드는 GKE가 해당 ComputeClass를 선택하는 포드에 새 노드 풀을 만들 수 있는지 여부를 제어합니다. GKE 버전 1.33.3-gke.1136000 이상에서는 클러스터에 노드 자동 프로비저닝이 사용 설정되어 있지 않더라도 ComputeClass에 노드 풀 자동 생성을 사용 설정할 수 있습니다. 1.33.3-gke.1136000 이전 버전에서는 클러스터 수준 노드 자동 프로비저닝을 사용 설정해야 합니다.

ComputeClass의 노드 풀 자동 생성을 사용 설정하려면 다음 단계를 따르세요.

  1. 다음 요구사항을 충족하는 새 Standard 클러스터 또는 기존 Standard 클러스터를 사용합니다.

    • GKE 버전 1.33.3-gke.1136000 이상을 사용합니다.
    • 빠른 출시 채널을 사용합니다.

    원하는 경우 새 표준 클러스터를 만들 수 있습니다.

  2. 클러스터가 이전 단계의 요구사항을 충족하지 않으면 클러스터 수준 노드 자동 프로비저닝을 사용 설정합니다.

  3. 다음 ComputeClass 예시를 YAML 파일로 저장합니다.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      -  machineFamily: n4
      -  machineFamily: n2
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    COMPUTE_CLASS을 새 ComputeClass 이름으로 바꿉니다. ComputeClasses에서 사용할 수 있는 필드에 대한 자세한 내용은 ComputeClass CustomResourceDefinition을 참고하세요.

  4. ComputeClass 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

  5. ComputeClass를 선택하는 다음 배포 예시를 helloweb-deploy.yaml로 저장합니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

  6. 클러스터에 배포를 만듭니다.

    kubectl apply -f helloweb-deploy.yaml
    
  7. GKE가 포드의 새 노드 풀을 만들었는지 확인하려면 클러스터의 노드 풀 목록을 가져옵니다.

    gcloud container node-pools list \
        --cluster=CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터 이름입니다.
    • CONTROL_PLANE_LOCATION: 클러스터 컨트롤 플레인의 리전 또는 영역입니다(예: us-central1 또는 us-central1-a).

클러스터 수준 노드 자동 프로비저닝 사용 설정

전체 GKE 클러스터에 노드 풀 자동 생성을 사용 설정하려면 노드 자동 프로비저닝 설정을 사용하세요. 노드 자동 프로비저닝을 사용하면 GKE가 포드 사양 또는 ComputeClass의 구성에 따라 클러스터 전체에서 대기 중인 워크로드의 새 노드 풀을 만들 수 있습니다. 신규 또는 기존 클러스터에 대해 노드 자동 프로비저닝을 사용 설정할 수 있습니다.

노드 자동 프로비저닝을 사용 설정하기 전에 VPC 서브넷의 기본 IPv4 주소 범위를 계획하세요. GKE는 이 IP 주소 범위를 기본 노드 IP 주소 범위로 사용합니다. 클러스터의 크기와 규모에 따라 기본 노드 IP 주소 범위에 새 노드에 할당할 IP 주소가 충분하지 않을 수 있습니다. 클러스터를 만든 후 노드 IP 주소 범위의 크기를 업데이트하는 경우 새 IP 주소의 트래픽을 허용하도록 GKE 클러스터 방화벽 규칙을 업데이트해야 합니다.

1.33.3-gke.1136000 이전 버전의 GKE에서 자동 생성된 노드 풀을 가져오려면 이 섹션의 단계를 따라야 합니다. Google Cloud 콘솔에서 클러스터 구성을 수정하여 기존 클러스터에 대해 노드 자동 프로비저닝을 사용 설정할 수도 있습니다.

새 클러스터를 만들 때 노드 자동 프로비저닝을 사용 설정하려면 다음 옵션 중 하나를 선택하세요.

콘솔

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 만들기 페이지로 이동합니다.

    Kubernetes 클러스터 만들기로 이동

  2. 클러스터 기본사항 페이지에서 새 클러스터의 이름과 위치를 지정합니다.

  3. 탐색 메뉴에서 자동화를 클릭합니다.

  4. 노드 자동 프로비저닝 사용 설정 체크박스를 선택합니다. 한도 섹션이 표시됩니다.

  5. CPU 및 메모리 한도를 지정합니다.

  6. 변경사항 저장을 클릭합니다.

gcloud

gcloud container clusters create CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --min-cpu=MINIMUM_CPU \
    --min-memory=MINIMUM_MEMORY \
    --max-cpu=MAXIMUM_CPU \
    --max-memory=MAXIMUM_MEMORY \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only

다음을 바꿉니다.

  • CLUSTER_NAME: 노드 자동 프로비저닝을 사용 설정할 클러스터의 이름입니다.
  • CONTROL_PLANE_LOCATION: 클러스터 컨트롤 플레인의 리전 또는 영역입니다(예: us-central1 또는 us-central1-a).
  • MINIMUM_CPU: 클러스터의 최소 코어 수입니다.
  • MINIMUM_MEMORY: 클러스터의 최소 메모리 용량(GiB)입니다.
  • MAXIMUM_CPU: 클러스터의 최대 코어 수입니다. 이 한도는 수동으로 생성된 노드 풀을 포함하여 클러스터의 모든 신규 및 기존 노드의 CPU 코어 합계에 적용됩니다.
  • MAXIMUM_MEMORY: 클러스터의 최대 메모리 용량(GiB)입니다. 이 한도는 수동으로 생성된 노드 풀을 포함하여 클러스터의 모든 신규 및 기존 노드 풀의 메모리 용량 합계에 적용됩니다.

노드 자동 프로비저닝 구성 파일로 설정 구성

YAML 구성 파일을 사용하여 노드 자동 프로비저닝의 리소스 한도 및 노드 구성 설정을 구성할 수 있습니다. 구성 파일을 사용하면 자동으로 생성된 노드 풀의 기본값을 선언적으로 지정하고 노드 자동 복구를 사용 설정하는 등의 고급 구성을 실행할 수 있습니다. 이 파일은 Kubernetes 커스텀 리소스인 ComputeClass와 관련이 없습니다. 대신 구성 파일은 명령줄 플래그를 사용하여 노드 자동 프로비저닝 설정을 지정하는 것보다 더 확장 가능한 대안으로 존재합니다. 자세한 내용은 구성 파일을 사용한 클러스터 수준 기본 설정을 참고하세요.

구성 파일을 만들고 사용하려면 다음 단계를 따르세요.

  1. 텍스트 편집기에서 Google Cloud CLI가 액세스할 수 있는 경로에 YAML 파일을 만듭니다.
  2. 다음 예와 같이 설정하거나 수정하려는 구성을 추가합니다.

    resourceLimits:
      - resourceType: 'cpu'
        minimum: 4
        maximum: 10
      - resourceType: 'memory'
        maximum: 64
      - resourceType: 'nvidia-tesla-t4'
        maximum: 4
    management:
      autoRepair: true
      autoUpgrade: true
    shieldedInstanceConfig:
      enableSecureBoot: true
      enableIntegrityMonitoring: true
    

    이 예시에는 다음과 같은 노드 자동 프로비저닝 설정이 있습니다.

    • resourceLimits: 클러스터의 CPU, 메모리 용량, NVIDIA T4 GPU의 리소스 한도를 설정합니다. 이러한 한도는 수동으로 생성된 노드 풀을 포함하여 클러스터의 리소스 용량 합계에 적용됩니다.
    • management: 클러스터에서 새로 자동 생성된 모든 노드 풀에 노드 자동 복구 및 노드 자동 업그레이드를 사용 설정합니다.
    • shieldedInstanceConfig: 클러스터에서 새로 자동 생성된 모든 노드 풀에 보안 부팅 및 노드 무결성 모니터링을 사용 설정합니다.
  3. 신규 또는 기존 클러스터에 대해 --autoprovisioning-config-file 플래그와 --enable-autoprovisioning 플래그를 지정하여 GKE에 구성 파일을 제공합니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • PATH_TO_CONFIGURATION_FILE: 구성 파일의 경로입니다.

구성 파일을 클러스터에 적용하면 GKE는 클러스터에서 새로 자동 생성된 노드 풀에 파일의 설정을 사용합니다. 이러한 설정은 GKE가 클러스터에서 생성한 기존 노드 풀에는 적용되지 않습니다.

노드 자동 프로비저닝의 리소스 한도 구성

클러스터 수준 노드 자동 프로비저닝을 사용하는 경우 클러스터가 모든 노드 풀에서 사용할 수 있는 총 리소스 양에 대한 한도를 구성해야 합니다. 클러스터에 노드 자동 프로비저닝을 사용 설정하려면 클러스터의 CPU 및 메모리 용량 한도를 지정해야 합니다. 또한 GPU 및 TPU와 같은 다른 유형의 연결된 리소스를 사용하려면 이러한 리소스의 한도를 지정해야 합니다. 이러한 한도는 클러스터에 노드 자동 프로비저닝 설정을 사용 설정한 경우에만 필요합니다. ComputeClasses만 사용하여 자동 생성된 노드 풀을 가져오는 경우 리소스 제한을 구성할 필요가 없습니다.

다음 방법 중 하나를 사용하여 노드 풀 자동 생성의 리소스 한도를 추가하거나 수정할 수 있습니다.

기존 클러스터의 리소스 한도를 구성하려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. 클러스터 이름을 클릭합니다. 클러스터 세부정보 페이지가 열립니다.

  3. 세부정보 탭을 클릭합니다.

  4. 자동화 섹션의 노드 자동 프로비저닝 행에서 수정을 클릭합니다. 노드 자동 프로비저닝 수정 창이 열립니다.

  5. 노드 자동 프로비저닝 사용 설정 체크박스를 선택합니다.

  6. 한도 섹션에서 클러스터의 CPU 및 메모리 용량의 최솟값과 최댓값을 지정합니다.

  7. GPU 또는 TPU와 같은 다른 리소스의 한도를 구성하려면 다음 단계를 따르세요.

    1. 리소스 추가를 클릭합니다.
    2. 리소스 유형 드롭다운 목록에서 GPU 모델 또는 TPU 머신 유형(예: NVIDIA A100 80GB 또는 ct5p)을 선택합니다.
    3. 리소스의 최솟값과 최댓값을 지정합니다.
  8. 선택사항: 노드 풀 위치 섹션에서 GKE가 노드를 만들 특정 영역을 선택합니다. 예를 들어 GPU 워크로드를 실행할 계획이라면 선택한 GPU 유형의 가용성이 높은 영역을 선택합니다.

  9. 변경사항 저장을 클릭합니다.

gcloud

다음 명령어 중 하나를 실행합니다.

  • CPU 및 메모리 리소스 한도를 지정합니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY
    

    다음을 바꿉니다.

    • MINIMUM_CPU: 클러스터의 최소 코어 수입니다.
    • MINIMUM_MEMORY: 클러스터의 최소 메모리 용량(GiB)입니다.
    • MAXIMUM_CPU: 클러스터의 최대 코어 수입니다. 이 한도는 수동으로 생성된 노드 풀을 포함하여 클러스터의 모든 노드 풀의 CPU 코어 합계에 적용됩니다.
    • MAXIMUM_MEMORY: 클러스터의 최대 메모리 용량(GiB)입니다. 이 한도는 수동으로 생성된 노드 풀을 포함하여 클러스터의 모든 노드 풀의 메모리 용량 합계에 적용됩니다.
  • GPU 리소스 한도를 지정합니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY \
        --min-accelerator=type=GPU_TYPE,count=MINIMUM_GPU_COUNT \
        --max-accelerator=type=GPU_TYPE,count=MAXIMUM_GPU_COUNT
    

    다음을 바꿉니다.

    • GPU_TYPE: 제한을 설정할 GPU 유형입니다(예: nvidia-l4).
    • MINIMUM_GPU_COUNT: 클러스터가 보유할 수 있는 지정된 유형의 최소 GPU 수입니다.
    • MAXIMUM_GPU_COUNT: 클러스터가 보유할 수 있는 지정된 유형의 최대 GPU 수입니다.
  • TPU 리소스 한도를 지정합니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY \
        --min-accelerator=type=TPU_TYPE,count=MINIMUM_TPU_COUNT \
        --max-accelerator=type=TPU_TYPE,count=MAXIMUM_TPU_COUNT
    

    다음을 바꿉니다.

    • TPU_TYPE: 제한을 설정할 TPU 유형입니다. 다음과 같은 값이 지원됩니다.
      • tpu-v4-podslice: TPU v4
      • tpu-v5-lite-podslice: ct5lp-로 시작하는 머신 유형이 있는 TPU v5e
      • tpu-v5p-slice: ct5p-로 시작하는 머신 유형의 TPU v5e
      • tpu-v6e-slice: TPU Trillium입니다.
    • MINIMUM_TPU_COUNT: 클러스터에 포함될 수 있는 지정된 유형의 최소 TPU 칩 수입니다. 지정한 값이 멀티 호스트 TPU 슬라이스의 TPU 칩 수보다 크면 TPU 슬라이스가 축소되지 않을 수 있습니다.
    • MAXIMUM_TPU_COUNT: 클러스터에 포함될 수 있는 지정된 유형의 최대 TPU 칩 수입니다. 멀티 호스트 TPU 슬라이스의 경우 GKE가 슬라이스를 원자적으로 확장할 수 있도록 각 슬라이스의 칩 수보다 큰 값을 지정합니다. 슬라이스의 칩 수는 TPU 토폴로지의 곱입니다. 예를 들어 토폴로지가 2x2x2이면 슬라이스의 칩 수는 8이므로 MAXIMUM_TPU_COUNT의 값은 8보다 커야 합니다.

구성 파일

  1. 구성 파일의 resourceLimits 필드에 다음 필드 집합 중 하나를 지정합니다.

    • CPU 및 메모리 리소스 한도를 지정합니다.

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
      

      다음을 바꿉니다.

      • MINIMUM_CPU: 클러스터의 최소 코어 수입니다.
      • MINIMUM_MEMORY: 클러스터의 최소 메모리 용량(GiB)입니다.
      • MAXIMUM_CPU: 클러스터의 최대 코어 수입니다. 이 한도는 수동으로 생성된 노드 풀을 포함하여 클러스터의 모든 노드 풀의 CPU 코어 합계에 적용됩니다.
      • MAXIMUM_MEMORY: 클러스터의 최대 메모리 용량(GiB)입니다. 이 한도는 수동으로 생성된 노드 풀을 포함하여 클러스터의 모든 노드 풀의 메모리 용량 합계에 적용됩니다.
    • GPU 리소스 한도를 지정합니다.

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
        - resourceType: 'GPU1_TYPE'
          minimum: MINIMUM_GPU1_COUNT
          maximum: MAXIMUM_GPU1_COUNT
        - resourceType: 'GPU2_TYPE'
          minimum: MINIMUM_GPU2_COUNT
          maximum: MAXIMUM_GPU2_COUNT
      

      다음을 바꿉니다.

      • GPU1_TYPE,GPU2_TYPE: 한도를 설정할 GPU 유형입니다(예: nvidia-l4).
      • MINIMUM_GPU1_COUNT,MINIMUM_GPU2_COUNT: 클러스터가 보유할 수 있는 지정된 유형의 최소 GPU 수입니다.
      • MAXIMUM_GPU1_COUNT,MAXIMUM_GPU2_COUNT: 클러스터에 포함될 수 있는 지정된 유형의 최대 GPU 수입니다.
    • TPU 리소스 한도를 지정합니다.

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
        - resourceType: 'TPU1_TYPE'
          minimum: MINIMUM_TPU1_COUNT
          maximum: MAXIMUM_TPU1_COUNT
        - resourceType: 'TPU2_TYPE'
          minimum: MINIMUM_TPU2_COUNT
          maximum: MAXIMUM_TPU2_COUNT
      

      다음을 바꿉니다.

      • TPU1_TYPE,TPU2_TYPE: 제한을 설정할 TPU 유형입니다. 다음 값이 지원됩니다.
        • tpu-v4-podslice: TPU v4
        • tpu-v5-lite-podslice: ct5lp-로 시작하는 머신 유형의 TPU v5e
        • tpu-v5p-slice: ct5p-로 시작하는 머신 유형의 TPU v5e
        • tpu-v6e-slice: TPU Trillium입니다.
      • MINIMUM_TPU1_COUNT,MINIMUM_TPU2_COUNT: 클러스터에 포함될 수 있는 지정된 유형의 최소 TPU 칩 수입니다. 지정한 값이 멀티 호스트 TPU 슬라이스의 TPU 칩 수보다 크면 TPU 슬라이스가 축소되지 않을 수 있습니다.
      • MAXIMUM_TPU1_COUNT,MAXIMUM_TPU2_COUNT: 클러스터가 보유할 수 있는 지정된 유형의 최대 TPU 칩 수입니다. 멀티 호스트 TPU 슬라이스의 경우 GKE가 슬라이스를 원자적으로 확장할 수 있도록 각 슬라이스의 칩 수보다 큰 값을 지정합니다. 슬라이스의 칩 수는 TPU 토폴로지의 곱입니다. 예를 들어 TPU1_TYPE의 토폴로지가 2x2x2이면 슬라이스의 칩 수는 8이므로 MAXIMUM_TPU1_COUNT 값은 8보다 커야 합니다.
  2. 신규 또는 기존 클러스터에 대해 --autoprovisioning-config-file 플래그와 --enable-autoprovisioning 플래그를 지정하여 GKE에 구성 파일을 제공합니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • PATH_TO_CONFIGURATION_FILE: 구성 파일의 경로입니다.

기존 노드 풀을 자동 생성으로 표시

클러스터 수준 노드 자동 프로비저닝을 사용 설정한 후 클러스터의 기존 노드 풀을 자동 생성으로 표시할 수 있습니다. GKE는 이러한 노드 풀의 확장을 관리하며, 노드 풀이 비어 있으면 삭제합니다. 수동으로 만든 노드 풀을 자동으로 생성된 것으로 표시하여 GKE가 노드 풀을 관리하도록 할 수 있습니다.

클러스터의 자동 프로비저닝을 사용 중지하면 GKE가 클러스터의 기존 자동 생성 노드 풀을 모두 관리하지 않습니다. 나중에 클러스터의 자동 프로비저닝을 다시 사용 설정해도 GKE는 기존 노드 풀의 관리를 자동으로 재개하지 않습니다. 기존 노드 풀을 자동 생성으로 표시해야 합니다.

기존 노드 풀을 자동 생성으로 표시하려면 다음 명령어를 실행합니다.

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning

NODE_POOL_NAME을 노드 풀의 이름으로 바꿉니다.

자동 생성된 노드 풀의 기본 설정 구성

GKE는 ComputeClasses 및 포드 사양을 사용하여 대기 중인 포드를 최적으로 실행할 수 있는 노드 유형을 결정합니다. 선택적으로 GKE가 자동으로 생성된 노드 풀에 적용하는 기본 설정을 구성할 수 있습니다. 예를 들어 노드의 맞춤 Identity and Access Management (IAM) 서비스 계정이나 맞춤 부팅 디스크 구성이 있습니다. 이러한 기본 설정은 Google에서 클러스터에 설정한 해당 기본값을 재정의합니다. 예를 들어 자동 생성된 노드 풀의 기본값으로 Ubuntu 노드 이미지를 설정하여 GKE 기본 Container-Optimized OS 노드 이미지를 재정의할 수 있습니다.

노드 자동 프로비저닝을 사용하여 클러스터 수준에서 또는 ComputeClasses의 워크로드 수준에서 기본 설정을 구성할 수 있습니다. 이러한 수준 중 하나에서 설정을 구성하기 전에 다음 사항을 고려하세요.

  • 클러스터 수준 설정은 클러스터에서 자동으로 생성된 모든 노드 풀에 적용되며 ComputeClass 설정은 해당 ComputeClass를 사용하는 워크로드에만 적용됩니다.
  • ComputeClass와 클러스터 수준에서 동일한 기본 설정을 지정하면 GKE는 ComputeClass를 사용하는 워크로드에 ComputeClass 설정을 사용합니다.
  • 구성한 기본값은 자동 생성 노드 풀에만 적용됩니다. 기존 노드 풀은 영향을 받지 않습니다.

다음 섹션에서는 특정 기본 설정을 구성하는 방법을 보여줍니다.

기본 노드 이미지 설정

다음 옵션 중 하나를 선택합니다.

ComputeClass

  1. ComputeClass 매니페스트에서 nodePoolConfig.imageType 필드를 사용합니다. 이 필드는 GKE 버전 1.32.4-gke.1198000 이상에서 사용할 수 있습니다.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      nodePoolConfig:
        imageType: IMAGE_TYPE
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    IMAGE_TYPE노드 이미지 값으로 바꿉니다. 다음 중 하나일 수 있습니다.

    • cos_containerd: containerd를 포함한 Container-Optimized OS입니다.
    • ubuntu_containerd: containerd를 포함한 Ubuntu입니다.
  2. ComputeClass 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

gcloud

명령줄에서 기본 노드 이미지를 설정하려면 --autoprovisioning-image-type 플래그를 사용하세요.

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-image-type=IMAGE_TYPE

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • IMAGE_TYPE: 노드 이미지이며 다음 중 하나일 수 있습니다.
    • cos_containerd: containerd를 포함한 Container-Optimized OS입니다.
    • ubuntu_containerd: containerd를 포함한 Ubuntu입니다.

구성 파일에서 기본 노드 이미지를 설정하려면 다음 단계를 따르세요.

  1. 구성 파일에서 imageType 필드를 지정합니다.

      imageType: 'IMAGE_TYPE'
    

    구성 파일에 다른 설정이 있는 경우 이러한 설정은 수정하지 마세요. 구성 파일의 수정 또는 삭제는 해당 클러스터 수준 설정도 수정합니다.

  2. 신규 또는 기존 클러스터에 대해 --autoprovisioning-config-file 플래그와 --enable-autoprovisioning 플래그를 지정하여 GKE에 구성 파일을 제공합니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • PATH_TO_CONFIGURATION_FILE: 구성 파일의 경로입니다.

노드의 기본 IAM 서비스 계정 설정

GKE 노드는 로깅 및 모니터링과 같은 시스템 작업에 IAM 서비스 계정을 사용합니다. 자동으로 생성된 노드 풀의 IAM 서비스 계정을 변경하려면 다음 옵션 중 하나를 선택하세요.

ComputeClass

  1. Computeclass 매니페스트에서 nodePoolConfig.serviceAccount 필드를 사용합니다. 이 필드는 GKE 버전 1.31.4-gke.1072000 이상에서 사용할 수 있습니다.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      nodePoolConfig:
        serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    다음을 바꿉니다.

    • SERVICE_ACCOUNT_NAME: IAM 서비스 계정의 이름입니다(예: my-node-account).
    • PROJECT_ID: 서비스 계정 프로젝트의 프로젝트 ID입니다.
  2. ComputeClass 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

gcloud

gcloud CLI를 사용하여 자동 생성된 노드 풀의 기본 서비스 계정을 구성할 때는 노드 풀이 올바르게 작동하는 데 필요한 액세스 범위도 지정해야 합니다.

명령줄에서 기본 서비스 계정 및 액세스 범위를 설정하려면 --autoprovisioning-service-account--autoprovisioning-scopes 플래그를 사용합니다.

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append

다음을 바꿉니다.

  • SERVICE_ACCOUNT_NAME: IAM 서비스 계정의 이름입니다(예: my-node-account).
  • PROJECT_ID: 서비스 계정 프로젝트의 프로젝트 ID입니다.

구성 파일에서 기본 서비스 계정 및 액세스 범위를 설정하려면 다음 단계를 따르세요.

  1. 구성 파일에서 serviceAccountscopes 필드를 지정합니다.

    serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    scopes: https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
    

    구성 파일에 다른 설정이 있는 경우 이러한 설정은 수정하지 마세요. 구성 파일의 수정 또는 삭제는 해당 클러스터 수준 설정도 수정합니다.

  2. 신규 또는 기존 클러스터에 대해 --autoprovisioning-config-file 플래그와 --enable-autoprovisioning 플래그를 지정하여 GKE에 구성 파일을 제공합니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • PATH_TO_CONFIGURATION_FILE: 구성 파일의 경로입니다.

자동 생성된 노드의 기본 영역 설정

기본적으로 GKE는 클러스터 유형에 따라 다음 영역에 노드를 자동 생성합니다.

  • 리전 클러스터: GKE는 클러스터 리전의 임의의 세 영역에 노드를 만듭니다.
  • 영역 클러스터: GKE는 클러스터 컨트롤 플레인과 동일한 영역에 노드를 만듭니다.

GKE에서 노드를 자동으로 만드는 영역 목록을 수동으로 지정할 수 있습니다. 이러한 영역은 클러스터 컨트롤 플레인과 동일한 리전에 있어야 합니다. 예를 들어 us-central1-a에 제어 영역이 있는 영역 클러스터가 있는 경우 GKE가 노드를 자동으로 만들도록 us-central1 리전의 영역을 지정할 수 있습니다. 기존 클러스터에서 자동 생성된 노드의 기본 영역을 수정하면 변경사항은 GKE가 만드는 새 노드 풀에만 적용됩니다.

자동 생성된 노드의 기본 영역을 지정하려면 다음 옵션 중 하나를 선택합니다.

ComputeClass

  1. ComputeClass 매니페스트에서 spec.priorityDefaults.location.zones 필드를 사용합니다. 이 필드는 GKE 버전 1.33.1-gke.1545000 이상에서 사용할 수 있습니다.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2','...']
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    ZONE1,ZONE2,...를 자동 생성된 노드의 기본 영역을 쉼표로 구분한 목록으로 바꿉니다(예: 'us-central1-a','us-central1-b', 'us-central1-f''). spec.priorities 필드의 특정 규칙에 영역의 명시적 목록이 포함되지 않은 경우 GKE는 이러한 영역을 사용합니다.

  2. ComputeClass 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

gcloud

명령줄에서 노드 풀 자동 생성의 기본 영역을 설정하려면 --autoprovisioning-locations 플래그를 사용합니다.

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-locations=ZONE1,ZONE2,...

ZONE1,ZONE2,...를 자동 생성된 노드의 기본 영역을 쉼표로 구분한 목록으로 바꿉니다(예: 'us-central1-a','us-central1-b', 'us-central1-f'').

구성 파일을 사용하여 노드 풀 자동 생성의 기본 영역을 설정하려면 다음 단계를 따르세요.

  1. 구성 파일에서 autoprovisioningLocations 필드를 지정합니다.

    autoprovisioningLocations:
    - ZONE1
    - ZONE2
    

    ZONE1,ZONE2을 자동 생성된 노드의 기본 영역(예: 'us-central1-a', 'us-central1-b')으로 바꿉니다.

    구성 파일에 다른 설정이 있는 경우 이러한 설정은 수정하지 마세요. 구성 파일의 수정 또는 삭제는 해당 클러스터 수준 설정도 수정합니다.

  2. 신규 또는 기존 클러스터에 대해 --autoprovisioning-config-file 플래그와 --enable-autoprovisioning 플래그를 지정하여 GKE에 구성 파일을 제공합니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • PATH_TO_CONFIGURATION_FILE: 구성 파일의 경로입니다.

부팅 디스크 암호화에 고객 관리 암호화 키 설정

GKE가 자동 생성된 노드 풀의 노드 부팅 디스크를 암호화하는 데 사용하는 Cloud Key Management Service의 고객 관리 암호화 키 (CMEK)를 지정할 수 있습니다. 노드 풀 자동 생성에 키를 사용하려면 먼저 키를 만들어야 합니다. 노드 부팅 디스크의 CMEK를 설정하려면 다음 옵션 중 하나를 선택합니다.

ComputeClass

ComputeClasses에서는 ComputeClass의 spec.priorities 필드에 있는 모든 우선순위 규칙에서 키를 지정해야 합니다.

  1. ComputeClass 매니페스트에서 priorities.storage.bootDiskKMSKey 필드를 사용합니다.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
        storage:
          bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
      - machineFamily: n4d
        storage:
          bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    다음을 바꿉니다.

    • KEY_PROJECT_ID: 키가 있는 프로젝트의 프로젝트 ID입니다.
    • KEY_LOCATION: 키링의 위치입니다.
    • KEY_RING: 키가 포함된 키링의 이름입니다.
    • KEY_NAME: 키의 이름입니다.
  2. ComputeClass 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

gcloud

  1. 구성 파일에서 bootDiskKmsKey 필드를 지정합니다.

    bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

    다음을 바꿉니다.

    • KEY_PROJECT_ID: 키가 있는 프로젝트의 프로젝트 ID입니다.
    • KEY_LOCATION: 키링의 위치입니다.
    • KEY_RING: 키가 포함된 키링의 이름입니다.
    • KEY_NAME: 키의 이름입니다.

    구성 파일에 다른 설정이 있는 경우 이러한 설정은 수정하지 마세요. 구성 파일의 수정 또는 삭제는 해당 클러스터 수준 설정도 수정합니다.

  2. 신규 또는 기존 클러스터에 대해 --autoprovisioning-config-file 플래그와 --enable-autoprovisioning 플래그를 지정하여 GKE에 구성 파일을 제공합니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • PATH_TO_CONFIGURATION_FILE: 구성 파일의 경로입니다.

노드 무결성 및 보안 부팅 구성

노드 자동 프로비저닝 구성 파일을 사용해야만 자동 생성된 노드 풀에 보안 부팅 및 무결성 모니터링을 사용 설정할 수 있습니다.

  1. 구성 파일에서 shieldedInstanceConfig 필드를 지정합니다.

    shieldedInstanceConfig:
      enableSecureBoot: true
      enableIntegrityMonitoring: true
    

    구성 파일에 다른 설정이 있는 경우 이러한 설정은 수정하지 마세요. 구성 파일의 수정 또는 삭제는 해당 클러스터 수준 설정도 수정합니다.

  2. 신규 또는 기존 클러스터에 대해 --autoprovisioning-config-file 플래그와 --enable-autoprovisioning 플래그를 지정하여 GKE에 구성 파일을 제공합니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • PATH_TO_CONFIGURATION_FILE: 구성 파일의 경로입니다.

노드 자동 복구 및 자동 업그레이드 구성

자동으로 생성된 노드 풀에서 노드 자동 복구노드 자동 업그레이드 설정을 수정할 수 있습니다. 이러한 기능은 모든 GKE 클러스터 및 노드 풀에서 기본적으로 사용 설정됩니다. 클러스터의 안정성과 안정성을 개선하려면 이러한 기능을 사용 설정된 상태로 유지하는 것이 좋습니다.

노드 자동 복구 및 노드 자동 업그레이드 설정을 변경하려면 다음 옵션 중 하나를 선택하세요.

ComputeClass

  1. ComputeClass 매니페스트에서 spec.nodePoolConfig 필드의 autoRepair 필드와 autoUpgrade 필드를 사용합니다. 이러한 필드는 GKE 버전 1.34.0-gke.2201000 이상에서 사용할 수 있습니다.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      nodePoolConfig:
        autoRepair: true
        autoUpgrade: true
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    
  2. ComputeClass 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

gcloud

  • 명령줄에서 자동 복구 및 자동 업그레이드 설정을 사용 설정하려면 --enable-autoprovisioning-autorepair--enable-autoprovisioning-autoupgrade 플래그를 사용합니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --enable-autoprovisioning-autorepair \
        --enable-autoprovisioning-autoupgrade
    
  • 명령줄에서 자동 복구 및 자동 업그레이드 설정을 사용 중지하려면 --no-enable-autoprovisioning-autorepair--no-enable-autoprovisioning-autoupgrade 플래그를 사용합니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --no-enable-autoprovisioning-autorepair \
        --no-enable-autoprovisioning-autoupgrade
    
  • 구성 파일을 사용하여 노드 자동 복구 및 자동 업그레이드 설정을 수정하려면 다음 단계를 따르세요.

    1. 구성 파일에서 management.autoRepairmanagement.autoUpgrade 필드를 지정합니다.

      management:
        autoRepair: true
        autoUpgrade: true
      

      구성 파일에 다른 설정이 있는 경우 이러한 설정은 수정하지 마세요. 구성 파일의 수정 또는 삭제는 해당 클러스터 수준 설정도 수정합니다.

    2. 신규 또는 기존 클러스터에 대해 --autoprovisioning-config-file 플래그와 --enable-autoprovisioning 플래그를 지정하여 GKE에 구성 파일을 제공합니다.

      gcloud container clusters create CLUSTER_NAME \
          --location=CONTROL_PLANE_LOCATION \
          --enable-autoprovisioning \
          --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
      

      다음을 바꿉니다.

      • CLUSTER_NAME: 클러스터의 이름입니다.
      • PATH_TO_CONFIGURATION_FILE: 구성 파일의 경로입니다.

일시 급증 업그레이드 설정 구성

자동으로 생성된 노드 풀에서 일시 급증 업그레이드 설정을 지정할 수 있습니다. 일시 급증 업그레이드는 기본 GKE 노드 업그레이드 전략입니다. 일시 급증 업그레이드 설정을 변경하려면 클러스터 수준 노드 자동 프로비저닝을 구성해야 합니다.

  • 명령줄에서 일시 급증 업그레이드 설정을 지정하려면 --autoprovisioning-max-surge-upgrade--autoprovisioning-max-unavailable-upgrade 플래그를 사용합니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-max-surge-upgrade=MAX_SURGE \
        --autoprovisioning-max-unavailable-upgrade=MAX_UNAVAILABLE
    

    다음을 바꿉니다.

    • MAX_SURGE: 업그레이드 중에 노드 풀에 추가할 수 있는 최대 노드 수입니다.
    • MAX_UNAVAILABLE: 업그레이드 중에 동시에 사용할 수 없는 노드 풀의 최대 노드 수입니다.
  • 구성 파일을 사용하여 일시 급증 업그레이드 설정을 지정하려면 다음 단계를 따르세요.

    1. 구성 파일에서 upgradeSettings.maxSurgeUpgradeupgradeSettings.maxUnavailableUpgrade 필드를 지정합니다.

      upgradeSettings:
        maxSurgeUpgrade: MAX_SURGE
        maxUnavailableUpgrade: MAX_UNAVAILABLE
      

      구성 파일에 다른 설정이 있는 경우 이러한 설정은 수정하지 마세요. 구성 파일의 수정 또는 삭제는 해당 클러스터 수준 설정도 수정합니다.

    2. 신규 또는 기존 클러스터에 대해 --autoprovisioning-config-file 플래그와 --enable-autoprovisioning 플래그를 지정하여 GKE에 구성 파일을 제공합니다.

      gcloud container clusters create CLUSTER_NAME \
          --location=CONTROL_PLANE_LOCATION \
          --enable-autoprovisioning \
          --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
      

      다음을 바꿉니다.

      • CLUSTER_NAME: 클러스터의 이름입니다.
      • PATH_TO_CONFIGURATION_FILE: 구성 파일의 경로입니다.

지정한 일시 급증 업그레이드 설정은 클러스터에서 일시 급증 업그레이드를 사용하여 자동 생성된 노드 풀을 업그레이드하는 경우에만 적용됩니다. 새로 자동 생성된 노드 풀에 대해 노드 업그레이드 전략을 일시 급증 업그레이드로 전환하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --enable-autoprovisioning-surge-upgrade

업그레이드 전략을 전환하면 GKE는 이전에 해당 업그레이드 전략에 대해 구성한 설정을 사용합니다.

새 자동 생성 노드 풀에 블루-그린 업그레이드 사용

새로 자동 생성된 모든 노드 풀에 대해 노드 업그레이드 전략을 블루-그린 업그레이드로 전환하고 블루-그린 업그레이드의 기본 설정을 조정할 수 있습니다. 업그레이드 전략을 변경하려면 클러스터 수준 노드 자동 프로비저닝을 구성해야 합니다. 변경사항은 새로 자동 생성된 노드 풀에만 적용됩니다. 기존 자동 생성 노드 풀을 블루-그린 업그레이드를 사용하도록 업데이트할 수도 있습니다.

  • 새로 자동 생성된 노드 풀에 블루-그린 업그레이드와 GKE 기본 설정을 사용하려면 다음 명령어를 실행합니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
        --enable-autoprovisioning \
        --enable-autoprovisioning-blue-green-upgrade
    
  • 블루-그린 업그레이드를 사용하고 새 자동 생성 노드 풀에 대해 자체 기본 설정을 구성하려면 다음 명령어를 실행합니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --enable-autoprovisioning-blue-green-upgrade \
        --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \
        --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION
    

    다음을 바꿉니다.

    • NODE_POOL_SOAK_DURATION: 블루 풀의 모든 노드 일괄 처리를 드레이닝한 후 블루 풀을 삭제하기 전에 GKE가 대기하는 시간(초)입니다. 기본값은 3600입니다.
    • BATCH_NODE_COUNT: 블루 풀 드레이닝 단계 중 일괄 처리에서 드레이닝할 노드 수입니다. 기본값은 1입니다. 0 값을 지정하면 GKE가 블루 풀 드레이닝 단계를 건너뜁니다.
    • BATCH_SOAK_DURATION: 이전 드레이닝 작업이 완료된 후 GKE가 일괄 드레이닝 작업을 시작하기 위해 대기하는 시간(초)입니다. 기본값은 0입니다.

맞춤 노드 부팅 디스크 구성

GKE가 자동 생성된 노드 풀의 각 노드 VM에 연결하는 부팅 디스크의 유형과 크기를 지정하려면 다음 옵션 중 하나를 선택합니다.

ComputeClass

  1. ComputeClass의 spec.priorities.storage 필드에서 bootDiskTypebootDiskSize 필드를 사용합니다.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
        storage:
          bootDiskType: BOOT_DISK_TYPE
          bootDiskSize: BOOT_DISK_SIZE
      - machineFamily: n4d
        storage:
          bootDiskType: BOOT_DISK_TYPE
          bootDiskSize: BOOT_DISK_SIZE
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    다음을 바꿉니다.

    • BOOT_DISK_TYPE: 노드 부팅 디스크로 사용할 디스크 유형입니다. 지정하는 값은 GKE가 해당 우선순위 규칙에 사용하는 Compute Engine 머신 유형에서 지원해야 합니다. 값은 다음 중 하나여야 합니다.
      • pd-balanced: 균형 있는 영구 디스크입니다.
      • pd-standard: 표준 영구 디스크입니다.
      • pd-ssd: 성능 (SSD) 영구 디스크입니다.
      • hyperdisk-balanced: Google Cloud Hyperdisk Balanced입니다.
    • BOOT_DISK_SIZE: 노드 부팅 디스크의 크기(GiB)입니다. 최솟값은 10입니다.
  2. ComputeClass 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

gcloud

  1. 구성 파일에서 diskSizeGbdiskType 필드를 지정합니다.

    diskSizeGb: BOOT_DISK_SIZE
    diskType: BOOT_DISK_TYPE
    

    다음을 바꿉니다.

    • BOOT_DISK_TYPE: 노드 부팅 디스크로 사용할 디스크 유형입니다. 지정하는 값은 GKE가 해당 우선순위 규칙에 사용하는 Compute Engine 머신 유형에서 지원해야 합니다. 값은 다음 중 하나여야 합니다.
      • pd-balanced: 균형 있는 영구 디스크입니다.
      • pd-standard: 표준 영구 디스크입니다.
      • pd-ssd: 성능 (SSD) 영구 디스크입니다.
      • hyperdisk-balanced: Google Cloud Hyperdisk Balanced입니다.
    • BOOT_DISK_SIZE: 노드 부팅 디스크의 크기(GiB)입니다. 최솟값은 10입니다.

    구성 파일에 다른 설정이 있는 경우 이러한 설정은 수정하지 마세요. 구성 파일의 수정 또는 삭제는 해당 클러스터 수준 설정도 수정합니다.

  2. 신규 또는 기존 클러스터에 대해 --autoprovisioning-config-file 플래그와 --enable-autoprovisioning 플래그를 지정하여 GKE에 구성 파일을 제공합니다.

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • PATH_TO_CONFIGURATION_FILE: 구성 파일의 경로입니다.

GKE는 시스템 기능 및 임시 스토리지를 위해 노드 부팅 디스크의 일부를 예약합니다. 자세한 내용은 노드 부팅 디스크를 기반으로 하는 임시 스토리지를 참고하세요.

일반적인 시나리오에 맞게 자동 생성된 노드 풀 구성

다음 섹션에서는 특정 일반적인 GKE 사용 사례에 대해 자동 생성된 노드 풀을 요청하는 방법을 보여줍니다. 추가 사용 사례 및 지원되는 구성에 관한 자세한 내용은 특정 사용 사례에 관한 문서를 참고하세요.

머신 시리즈 또는 머신 유형 선택

지원되는 Compute Engine 머신 시리즈 또는 머신 유형을 선택하려면 다음 옵션 중 하나를 선택합니다.

ComputeClass

  1. ComputeClass 매니페스트에서 spec.priorities 필드에 다음 필드 중 하나를 지정합니다. 동일한 ComputeClass 매니페스트에는 두 필드를 모두 지정할 수 있지만 동일한 우선순위 규칙에는 지정할 수 없습니다.

    • 머신 시리즈를 선택하려면 우선순위 규칙에서 machineFamily 필드를 지정합니다.

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: COMPUTE_CLASS
      spec:
        priorities:
        - machineFamily: MACHINE_SERIES
        whenUnsatisfiable: ScaleUpAnyway
        nodePoolAutoCreation:
          enabled: true
      

      MACHINE_SERIES을 Compute Engine 머신 시리즈(예: n4)로 바꿉니다.

    • 머신 유형을 선택하려면 우선순위 규칙에서 machineType 필드를 지정합니다.

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: COMPUTE_CLASS
      spec:
        priorities:
        - machineType: MACHINE_TYPE
        whenUnsatisfiable: ScaleUpAnyway
        nodePoolAutoCreation:
          enabled: true
      

      MACHINE_TYPE을 Compute Engine 머신 유형(예: c4-standard-96)으로 바꿉니다. GKE 버전 1.33.2-gke.1111000 이상에서는 이 필드에 커스텀 머신 유형을 지정할 수도 있습니다.

    동일한 우선순위 규칙에서 machineFamily 필드와 machineType 필드를 지정할 수 없습니다.

  2. ComputeClass 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

  3. 워크로드에서 ComputeClass 선택

포드 사양

  1. 포드 매니페스트에서 다음 노드 라벨 중 하나를 선택합니다.

    • 머신 시리즈를 선택하려면 cloud.google.com/machine-family 노드 라벨을 사용합니다.

      apiVersion: v1
      kind: Pod
      metadata:
        name: machine-series-pod
      spec:
        nodeSelector:
          cloud.google.com/machine-family: MACHINE_SERIES
        containers:
        - name: hello-app
          image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      

      MACHINE_SERIES을 Compute Engine 머신 시리즈(예: n4)로 바꿉니다.

    • 사전 정의된 머신 유형을 선택하려면 cloud.google.com/machine-familynode.kubernetes.io/instance-type 노드 라벨을 사용합니다.

      apiVersion: v1
      kind: Pod
      metadata:
        name: machine-series-pod
      spec:
        nodeSelector:
          cloud.google.com/machine-family: MACHINE_SERIES
          node.kubernetes.io/instance-type: MACHINE_TYPE
        containers:
        - name: hello-app
          image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      

      MACHINE_TYPE을 지정된 머신 시리즈의 Compute Engine 머신 유형으로 바꿉니다. 예를 들어 MACHINE_SERIESn4를 지정하면 MACHINE_TYPEn4-standard-80를 지정할 수 있습니다.

      GKE 버전 1.33.2-gke.1111000에서는 이 필드에 커스텀 머신 유형을 지정할 수도 있습니다.

  2. 포드를 만듭니다.

    kubectl apply -f PATH_TO_POD_MANIFEST
    

    PATH_TO_POD_MANIFEST을 Pod 매니페스트의 경로로 바꿉니다.

GPU 선택

자동으로 생성된 노드 풀에 GPU를 요청하려면 다음 옵션 중 하나를 선택하세요.

ComputeClass

  1. ComputeClass 매니페스트에서 spec.priorities.gpu 필드를 지정합니다.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - gpu:
          type: GPU_TYPE
          count: GPU_COUNT
          driverVersion: DRIVER_VERSION
      whenUnsatisfiable: DoNotScaleUp
      nodePoolAutoCreation:
        enabled: true
    

    다음을 바꿉니다.

    • GPU_TYPE: 연결할 GPU 유형입니다(예: nvidia-l4).
    • GPU_COUNT: 각 노드에 연결할 GPU 수입니다. 이 값은 1 이상이어야 합니다.
    • DRIVER_VERSION: 설치할 GPU 드라이버 버전입니다. 이 값은 default 또는 latest이어야 합니다. 이 필드를 사용하려면 GKE 버전 1.31.1-gke.1858000 이상이 필요합니다.
  2. ComputeClass 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

  3. 다음 예와 같이 GPU 워크로드에서 ComputeClass를 선택합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-gpu-pod
    spec:
      nodeSelector:
        cloud.google.com/compute-class: nvidia-l4-class
      containers:
      - name: my-gpu-container
        image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
        command: ["/bin/bash", "-c", "--"]
        args: ["while true; do sleep 600; done;"]
        resources:
          limits:
          nvidia.com/gpu: 1
    

포드 사양

포드 사양에서 GPU를 선택하려면 클러스터 수준 노드 자동 프로비저닝을 구성하고 해당 GPU 유형의 리소스 한도를 설정해야 합니다. GPU 리소스 한도를 구성하고 포드에서 GPU를 선택하려면 다음 단계를 따르세요.

  1. 노드 풀 자동 생성의 리소스 한도 구성 섹션에 설명된 대로 사용할 GPU의 클러스터 수준 리소스 한도를 구성합니다.
  2. 포드 사양에서 노드 라벨을 사용하여 GPU를 선택합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-gpu-pod
    spec:
      nodeSelector:
        cloud.google.com/gke-accelerator: GPU_TYPE
        cloud.google.com/gke-accelerator-count: GPU_COUNT
        cloud.google.com/gke-gpu-driver-version: DRIVER_VERSION
      containers:
      - name: my-gpu-container
        image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
        command: ["/bin/bash", "-c", "--"]
        args: ["while true; do sleep 600; done;"]
        resources:
          limits:
          nvidia.com/gpu: GPU_QUANTITY
    

    다음을 바꿉니다.

    • GPU_TYPE: 연결할 GPU 유형입니다(예: nvidia-l4).
    • GPU_COUNT: 각 노드에 연결할 GPU 수입니다. 이 값은 1 이상이어야 합니다.
    • DRIVER_VERSION: 설치할 GPU 드라이버 버전입니다. 이 값은 default 또는 latest이어야 합니다. GKE 버전 1.32.2-gke.1297000 이상에서는 GKE가 default 드라이버 버전을 자동으로 설치합니다. 이 노드 라벨을 사용하려면 GKE 버전 1.29.2-gke.1108000 이상이 필요합니다. 자세한 내용은 GPU에서 노드 자동 프로비저닝을 사용하여 드라이버 설치를 참고하세요.
    • GPU_QUANTITY: 포드에 연결할 GPU 수입니다. 이 값은 GPU_COUNT 값보다 작거나 같아야 합니다.

TPU 선택

ComputeClass 또는 포드 사양에서 TPU를 요청할 수 있습니다. 이 섹션에서는 사용자가 Cloud TPU 선택을 잘 알고 있으며 사용할 TPU 유형, 토폴로지, 개수를 알고 있다고 가정합니다. 따라야 하는 단계는 TPU를 선택하는 방법에 따라 다릅니다.

자동 생성된 노드의 실행 시간 제한

GKE가 자동 생성된 노드를 종료할 때까지의 최대 기간을 지정할 수 있습니다. 이 시간 제한에는 Compute Engine 제한사항이 적용됩니다.

다음 옵션 중 하나를 선택합니다.

ComputeClass

  1. ComputeClass 매니페스트에서 spec.priorities.maxRunDurationSeconds 필드를 사용합니다. 이 필드는 GKE 버전 1.32.1-gke.1159000 이상에서 사용할 수 있습니다.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machine-family: n4
        maxRunDurationSeconds: MAX_RUN_DURATION
      whenUnsatisfiable: DoNotScaleUp
      nodePoolAutoCreation:
        enabled: true
    

    MAX_RUN_DURATION을 GKE가 노드를 종료하기 전에 자동 생성된 노드가 실행될 수 있는 시간(초)으로 바꿉니다.

  2. ComputeClass 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

  3. 워크로드에서 ComputeClass 선택

포드 사양

  1. 포드 매니페스트에서 cloud.google.com/gke-max-run-duration-seconds 노드 라벨의 노드 선택기를 사용합니다. 이 노드 라벨은 GKE 버전 1.31.2-gke.1518000 이상에서 사용할 수 있습니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: machine-series-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: n4
        cloud.google.com/gke-max-run-duration-seconds: MAX_RUN_DURATION
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
    

    MAX_RUN_DURATION을 GKE가 노드를 종료하기 전에 자동 생성된 노드가 실행될 수 있는 시간(초)으로 바꿉니다.

  2. 포드를 만듭니다.

    kubectl apply -f PATH_TO_POD_MANIFEST
    

    PATH_TO_POD_MANIFEST을 Pod 매니페스트의 경로로 바꿉니다.

최소 CPU 플랫폼 지정

노드 자동 프로비저닝은 지정된 최소 CPU 플랫폼으로 노드 풀을 만들 수 있습니다. 워크로드 수준(권장)이나 클러스터 수준에서 최소 CPU 플랫폼을 지정할 수 있습니다.

노드 풀 자동 생성 사용 중지

다음 섹션에서는 특정 노드 풀 또는 전체 클러스터에 대해 노드 풀 자동 생성을 사용 중지하는 방법을 보여줍니다. ComputeClass의 nodePoolAutoCreation.enabled 필드에 false 값을 지정하여 ComputeClass에서 노드 풀 자동 생성을 사용 중지할 수도 있습니다. 하지만 ComputeClass의 자동 생성은 활성 마이그레이션 및 대체 우선순위와 같은 기능을 사용할 수 있는 ComputeClass의 주요 이점이므로 사용 중지하지 않는 것이 좋습니다.

특정 노드 풀의 자동 생성 사용 중지

기존 자동 생성 노드 풀에서 GKE가 노드를 관리하지 못하도록 할 수 있습니다. 이 작업은 다음과 같은 영향을 미칩니다.

  • 클러스터 자동 확장 처리는 해당 노드 풀에서 노드를 생성하거나 삭제하지 않습니다. GKE에서 노드를 자동 확장하도록 하려면 해당 노드 풀에 대해 클러스터 자동 확장 처리를 사용 설정하면 됩니다.
  • 노드 수가 0이면 GKE가 노드 풀을 삭제하지 않습니다.
  • GKE는 해당 노드 풀에서 사용 가능한 기존 노드에 대기 중인 포드를 계속 배치합니다. 클러스터에 노드 자동 프로비저닝이 계속 사용 설정되어 있는 경우 GKE는 필요에 따라 대기 중인 포드의 새 노드 풀을 만들 수도 있습니다.

특정 노드 풀의 자동 생성을 사용 중지하려면 다음 명령어를 실행하세요.

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --no-enable-autoprovisioning

클러스터의 노드 자동 프로비저닝 사용 중지

노드 자동 프로비저닝 클러스터 설정을 사용 중지하여 전체 클러스터에 대해 노드 풀 자동 생성을 사용 중지할 수 있습니다. 이 작업은 다음과 같은 영향을 미칩니다.

  • 클러스터 자동 확장 처리는 기존 자동 생성 노드 풀에서 노드 생성 및 삭제를 중지합니다. 클러스터 자동 스케일러를 사용하는 수동으로 만든 노드 풀은 영향을 받지 않습니다.
  • GKE는 대기 중인 워크로드에 대해 새 노드 풀을 자동으로 만들지 않습니다. 클러스터를 모니터링하여 포드가 멈추지 않도록 합니다.
  • 클러스터가 다음 요구사항을 충족하는 경우 GKE는 자동 생성을 사용 설정하는 ComputeClass에 대해 새 노드 풀을 계속 만듭니다.

    • GKE 버전 1.33.3-gke.1136000 이상을 사용합니다.
    • 신속 출시 채널에 등록되어 있습니다.

    클러스터가 이러한 요구사항을 충족하지 않으면 GKE는 자동 생성을 사용 설정하는 ComputeClass의 새 노드 풀을 만들지 않습니다.

나중에 클러스터 수준 노드 자동 프로비저닝 설정을 다시 사용 설정해도 GKE는 기존 노드 풀에서 노드 풀 자동 생성을 다시 사용 설정하지 않습니다. 개별 노드 풀을 자동 생성으로 표시해야 합니다.

클러스터 수준 노드 자동 프로비저닝 설정을 사용 중지하려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. 수정할 클러스터의 이름을 클릭합니다. 클러스터 세부정보 페이지가 열립니다.

  3. 세부정보 탭을 클릭합니다.

  4. 자동화 섹션의 노드 자동 프로비저닝 행에서 수정을 클릭합니다. 노드 자동 프로비저닝 수정 창이 표시됩니다.

  5. 노드 자동 프로비저닝 사용 설정 체크박스를 선택 취소합니다.

  6. 변경사항 저장을 클릭합니다.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --no-enable-autoprovisioning

다음 단계