Standard 클러스터에서 Autopilot 모드로 워크로드 실행

클러스터 관리자와 애플리케이션 운영자는 Standard 모드 클러스터에서 가격 책정 및 사전 구성된 설정과 같은 Google Kubernetes Engine(GKE) Autopilot의 이점을 누릴 수 있습니다. 이 문서에서는 ComputeClasses 를 사용하여 Standard 클러스터에 Autopilot 워크로드를 배포하는 방법을 보여줍니다. 다음 개념에 익숙해야 합니다.

Autopilot ComputeClass 정보

GKE는 다른 Kubernetes 리소스와 마찬가지로 클러스터에 배포할 수 있는 ComputeClasses 라는 Kubernetes 커스텀 리소스를 제공합니다. ComputeClass는 머신 유형 또는 스팟 VM과 같은 노드 구성 목록을 정의합니다. 워크로드에서 ComputeClass를 선택할 수 있습니다. 이는 새 노드가 해당 목록의 구성 중 하나를 사용해야 함을 GKE에 나타냅니다.

워크로드에서 autopilot 필드가 사용 설정된 ComputeClass를 선택하면 GKE는 Autopilot 모드로 포드를 실행합니다. GKE에서 만드는 노드는 Google에서 관리하며 많은 기본 Autopilot 기능 및 보안 설정을 포함합니다. 이러한 워크로드를 배포할 때 눈에 띄는 차이점을 포함하여 Standard 클러스터에서 Autopilot 워크로드를 실행하는 것의 의미에 대한 자세한 내용은 GKE Standard의 Autopilot 모드 워크로드 정보를 참조하세요.

Autopilot ComputeClass 유형

GKE는 대부분의 범용 워크로드에 사용할 수 있는 기본 제공 Autopilot ComputeClass를 제공합니다. Autopilot 모드를 사용하도록 신규 또는 기존 커스텀 ComputeClass를 구성할 수도 있습니다. 사용하는 Autopilot ComputeClass의 유형은 다음과 같이 워크로드에 특정 하드웨어가 필요한지 여부에 따라 다릅니다.

  • 범용 워크로드: 포드를 컨테이너 최적화 컴퓨팅 플랫폼에 배치하는 기본 제공 Autopilot ComputeClass 중 하나를 사용합니다.
  • 특정 하드웨어가 필요한 워크로드: 커스텀 ComputeClass에 Autopilot 모드를 사용 설정하고, 해당 ComputeClass를 클러스터에 배포하고, 워크로드에서 해당 ComputeClass를 선택합니다.

이러한 옵션, 사용 시기, 각 옵션의 가격 책정에 대한 자세한 내용은 다음에서 확인하세요. Autopilot ComputeClass의 하드웨어 선택

가격 책정

GKE Autopilot 가격은 Autopilot ComputeClass를 사용하는 워크로드 및 노드에 적용됩니다. 적용되는 가격 책정 모델은 GKE가 워크로드의 노드를 만드는 데 사용하는 ComputeClass 우선순위 규칙에 따라 다릅니다. 자세한 내용은 'GKE Standard의 Autopilot 모드 워크로드 정보'의 가격 책정 을 참조하세요.

시작하기 전에

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

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

요구사항

  • 클러스터는 다음 GKE 버전 중 하나를 실행해야 합니다.

    • ComputeClass에서 Autopilot을 사용하려면 클러스터가 1.34.1-gke.1829001 이상을 실행해야 합니다.
    • 커스텀 Autopilot ComputeClass에서 podFamily 우선순위 규칙을 사용하려면 클러스터가 1.35.2-gke.1485000 이상을 실행해야 합니다.
  • 클러스터에 있는 노드 풀 중 1개 이상에 노드 taint가 없어야 합니다.

    이 노드 풀은 GKE가 이러한 노드에 추가하는 taint로 인해 Standard 클러스터의 Autopilot 노드에서 실행할 수 없는 GKE Standard 시스템 포드를 실행하는 데 필요합니다.

  • 보안 GKE 노드가 필요하며 기본적으로 사용 설정됩니다.

  • VPC 기반 클러스터를 사용해야 합니다.

  • Kubernetes NetworkPolicy를 사용하는 경우 클러스터가 GKE Dataplane V2를 사용해야 합니다. 기본적으로 모든 새 클러스터는 GKE Dataplane V2를 사용합니다.

    클러스터에서 GKE Dataplane V2를 사용하지 않는 경우 네트워크 정책 적용을 사용 중지해야 합니다.

제한사항

  • general-purpose-arm 포드 제품군 및 autopilot-arm 컴퓨팅 클래스는 Autopilot 클러스터를 통해서만 사용할 수 있습니다. Autopilot 노드가 있는 Standard 클러스터는 이후 버전에서 지원됩니다.
  • 클러스터의 기존 ComputeClass를 업데이트하여 Autopilot 모드를 사용하려면 업데이트된 사양으로 ComputeClass를 다시 만들어야 합니다. 자세한 내용은 기존 커스텀 ComputeClass에 Autopilot 사용 설정을 참조하세요.
  • 기본 제공 Autopilot ComputeClass는 전체 클러스터에 대해 Confidential GKE Node를 사용 설정하는 것을 지원하지 않습니다. 클러스터에 Confidential GKE Node를 사용 설정하면 기본 제공 Autopilot ComputeClass를 선택하는 새 포드가 무기한 Pending 상태로 유지됩니다.
  • Calico 네트워크 정책 적용은 지원되지 않습니다. GKE Dataplane V2를 사용하거나 네트워크 정책 적용을 사용 중지해야 합니다.
  • ComputeClass의 이름은 예약된 접두사인 gke 또는 autopilot으로 시작할 수 없습니다.

필수 역할 및 권한

ComputeClass를 배포하는 데 필요한 권한을 얻으려면 관리자에게 클러스터 또는 프로젝트에 대한 Kubernetes Engine 개발자 (roles/container.developer) IAM 역할을 부여해 달라고 요청하세요 . 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

Autopilot 요구사항을 충족하도록 클러스터 수정

콘솔을 사용하여 Standard 클러스터가 Autopilot 모드에서 워크로드를 실행하기 위한 모든 요구사항을 충족하는지 확인할 수 있습니다. Google Cloud 콘솔을 사용하여 이러한 요구사항을 충족하도록 클러스터를 수정할 수도 있습니다. Google Cloud

기존 클러스터 수정

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

    Kubernetes 클러스터로 이동

  2. 수정하려는 클러스터의 행에서 추가 작업 > 수정을 클릭합니다. 클러스터 세부정보 페이지가 열립니다.

  3. 클러스터 기본사항 섹션에서 Autopilot 컴퓨팅 클래스 호환성 섹션을 찾습니다.

    이 섹션에 사용 설정됨이 표시되면 클러스터가 이미 Autopilot과 호환됩니다. 워크로드에서 Autopilot ComputeClass 선택 섹션으로 건너뜁니다.

  4. Autopilot 컴퓨팅 클래스 호환성 섹션에 사용 중지됨이 표시되면 Autopilot 컴퓨팅 클래스 호환성 수정을 클릭합니다.

    이 섹션을 수정할 수 없는 경우 클러스터는 Autopilot 모드와 호환되지 않는 영구 설정을 사용합니다. 예를 들어 클러스터를 만든 후에는 클러스터를 VPC 기반으로 수정할 수 없습니다. **Autopilot 컴퓨팅 클래스 호환성** 섹션과 상호작용할 수 없는 경우 새 클러스터를 만들어야 합니다.

  5. 열리는 Autopilot 컴퓨팅 클래스 호환성 창에서 Autopilot 모드의 요구사항을 충족하기 위해 변경해야 하는 클러스터 설정을 검토합니다.

  6. Autopilot 컴퓨팅 클래스 사용 설정 을 클릭합니다. GKE는 필요에 따라 클러스터를 수정합니다.

새 클러스터 수정

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

    Kubernetes 클러스터 만들기로 이동

  2. 클러스터 기본사항 페이지에서 Autopilot 컴퓨팅 클래스로 배포 옵션 극대화 섹션을 찾습니다. 이 섹션에는 Autopilot 모드의 요구사항을 충족하기 위해 변경해야 하는 클러스터 설정이 표시됩니다.

  3. Autopilot 컴퓨팅 클래스 사용 설정 을 클릭합니다. GKE는 필요에 따라 클러스터를 수정합니다.

  4. 요구사항에 따라 다른 클러스터 설정을 구성합니다. 클러스터를 Autopilot과 호환되지 않게 만드는 설정을 수정하면 주의 메시지가 표시됩니다.

워크로드에서 Autopilot ComputeClass 선택

Autopilot 모드를 사용하는 ComputeClass를 선택하여 Standard 클러스터에서 Autopilot 모드로 워크로드를 실행할 수 있습니다. Autopilot 모드로 워크로드를 실행하려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. 콘솔에서 GKE **워크로드** 페이지로 이동합니다. Google Cloud

    워크로드로 이동

  2. 배포 또는 작업 만들기 를 클릭합니다. 배포 또는 작업의 워크로드 만들기 페이지가 표시됩니다.

  3. 노드 섹션에서 Autopilot 컴퓨팅 클래스 를 선택합니다.

  4. 컴퓨팅 클래스 선택 섹션의 컴퓨팅 클래스 드롭다운 목록에서 Autopilot 모드를 사용하는 ComputeClass를 선택합니다. 이 ComputeClass는 다음 중 하나일 수 있습니다.

  5. 워크로드를 구성하고 만듭니다.

kubectl CLI

워크로드에서 Autopilot ComputeClass를 선택하려면 노드 선택기cloud.google.com/compute-class 라벨에 사용합니다. 이는 GKE에서 다른 ComputeClass를 선택하는 데 사용하는 것과 동일한 라벨입니다. 다음 단계에서는 ComputeClass를 선택하는 배포 예시를 만들고 포드가 Autopilot 모드로 실행되는지 확인하는 방법을 보여줍니다.

  1. 다음 배포 예시를 autopilot-cc-deployment.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"

    COMPUTE_CLASS를 사용할 컴퓨팅 클래스의 이름으로 바꿉니다. 이 값은 다음 중 하나일 수 있습니다.

  2. 워크로드를 배포합니다.

    kubectl apply -f autopilot-cc-deployment.yaml
    

커스텀 Autopilot ComputeClass 구성

Autopilot을 사용하도록 커스텀 ComputeClass를 구성할 수 있습니다. 다음과 같은 경우 커스텀 Autopilot ComputeClass를 사용합니다.

  • 워크로드를 최적으로 실행하는 데 GPU 또는 특정 Compute Engine 머신 시리즈와 같은 특정 하드웨어가 필요합니다.
  • Autopilot 컨테이너 최적화 컴퓨팅 플랫폼을 사용하는 동안 영역 또는 taint와 같은 노드 설정을 조정하려고 합니다.

워크로드에 이러한 요구사항이 없는 경우 대신 기본 제공 Autopilot ComputeClass 중 하나를 사용하는 것이 좋습니다. 기본 제공 Autopilot ComputeClass를 선택하려면 이전 워크로드에서 Autopilot ComputeClass 선택 섹션을 참조하세요.

새 커스텀 Autopilot ComputeClass 만들기

  1. 다음 ComputeClass 매니페스트 예시 중 하나를 저장합니다.

    • 특정 머신 선택:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: n4-class
      spec:
        autopilot:
          enabled: true
        priorities:
        - machineFamily: n4
          spot: true
          minCores: 16
        - machineFamily: n4
          spot: true
        - machineFamily: n4
          spot: false
        activeMigration:
          optimizeRulePriority: true
      

      이 매니페스트에는 다음 필드가 포함됩니다.

      • autopilot: ComputeClass에 Autopilot 모드를 사용 설정합니다. Autopilot 클러스터에 배포하는 ComputeClass에서 이 필드를 지정하면 GKE는 이 필드를 무시합니다.
      • priorities: 서로 다른 세 가지 N4 머신 계열의 배열을 정의합니다.
      • activeMigration: 리소스를 사용할 수 있게 되면 GKE가 포드를 우선순위 목록에서 더 높은 구성으로 마이그레이션할 수 있도록 합니다.
    • 수정된 컨테이너 최적화 컴퓨팅 플랫폼 사용:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: general-purpose-class
      spec:
        autopilot:
          enabled: true
        priorities:
        - podFamily: general-purpose
        priorityDefaults:
          location:
            zones: ['us-central1-a','us-central1-b','us-central1-f']
      

      이 매니페스트에는 다음 필드가 포함됩니다.

      • autopilot: ComputeClass에 Autopilot 모드를 사용 설정합니다. Autopilot 클러스터에 배포하는 ComputeClass에서 이 필드를 지정하면 GKE는 이 필드를 무시합니다.
      • priorities.podFamily: podFamily 우선순위 규칙 을 사용하여 Autopilot 컨테이너 최적화 컴퓨팅 플랫폼에서 포드를 실행합니다.
      • priorityDefaults.location: GKE가 ComputeClass를 사용하는 포드의 노드를 만들어야 하는 영역을 정의합니다.
  2. ComputeClass를 배포합니다.

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    PATH_TO_COMPUTECLASS_MANIFEST를 이전 단계의 ComputeClass 매니페스트 경로로 바꿉니다.

  3. ComputeClass가 있는지 확인합니다.

    kubectl get computeclasses
    

    출력은 다음과 비슷합니다.

    NAME                  AGE
    n4-class              3s
    

기존 커스텀 ComputeClass에 Autopilot 사용 설정

Standard 클러스터에 있는 기존 커스텀 ComputeClass에서 Autopilot을 사용 설정할 수 있습니다. 전체 클러스터가 Autopilot 모드를 사용하므로 Autopilot 클러스터에 있는 ComputeClass에서 Autopilot을 사용 설정해도 아무런 효과가 없습니다.

기존 ComputeClass에 Autopilot을 사용 설정하면 GKE는 Autopilot을 사용하여 ComputeClass를 선택하는 새 포드를 실행합니다. Autopilot ComputeClass를 선택하는 Standard 노드에 기존 포드가 있는 경우 이러한 포드는 다시 생성될 때만 Autopilot을 사용합니다.

Autopilot 모드를 사용하도록 기존 커스텀 ComputeClass를 업데이트하려면 다음 단계를 따르세요.

  1. 텍스트 편집기에서 기존 ComputeClass의 매니페스트 파일을 업데이트하여 spec.autopilot 필드를 추가합니다.

    spec:
      autopilot:
        enabled: true
    
  2. Kubernetes API의 기존 ComputeClass 리소스를 업데이트된 사양으로 바꿉니다.

    kubectl replace --force -f PATH_TO_UPDATED_MANIFEST
    

    PATH_TO_UPDATED_MANIFEST를 업데이트된 매니페스트 파일의 경로로 바꿉니다.

  3. 새 노드 생성을 트리거하려면 컴퓨팅 클래스를 사용하는 워크로드를 다시 만듭니다.

업데이트된 매니페스트를 적용한 후 GKE가 이 ComputeClass를 위해 만드는 노드는 Autopilot을 사용합니다. GKE는 업데이트 전에 생성된 기존 노드를 수정하지 않습니다.

워크로드에서 Autopilot을 사용하는지 확인

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

콘솔

  1. 콘솔에서 GKE **워크로드** 페이지로 이동합니다. Google Cloud

    워크로드로 이동

  2. 워크로드의 경우 노드 유형 열에서 값을 확인합니다. 워크로드에서 Autopilot 모드를 사용하는 경우 이 값은 Autopilot 관리형 입니다.

kubectl CLI

포드를 실행하는 노드의 이름을 확인합니다.

kubectl get pods -l=app=hello -o wide

출력은 다음과 비슷합니다.

NAME                       READY   STATUS    RESTARTS   AGE     IP             NODE                                         NOMINATED NODE   READINESS GATES
helloweb-79b9f6f75-5wwc9   1/1     Running   0          152m    10.102.1.135   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>
helloweb-79b9f6f75-9skb9   1/1     Running   0          4d3h    10.102.0.140   gk3-cluster-1-nap-10abc8ya1-632bac02-hjl6   <none>           <none>
helloweb-79b9f6f75-h7bdv   1/1     Running   0          152m    10.102.1.137   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>

이 출력에서 노드 열의 gk3- 접두사는 노드가 Autopilot에서 관리됨을 나타냅니다.

기본적으로 Autopilot ComputeClass 적용

기본 제공 또는 커스텀 ComputeClass를 네임스페이스 또는 전체 클러스터의 기본 ComputeClass로 설정할 수 있습니다. 기본 ComputeClass는 다른 ComputeClass를 명시적으로 선택하지 않는 모든 포드에 적용됩니다. Autopilot ComputeClass를 기본값으로 설정하면 워크로드에서 다른 옵션을 선택하지 않는 한 모든 포드가 Autopilot 모드로 실행되도록 할 수 있습니다.

기본값으로 설정한 ComputeClass에서 podFamily 우선순위 규칙을 사용하는 경우 다른 ComputeClass를 선택하지 않는 포드는 범용 Autopilot 포드로 실행될 수 있습니다. 이 방법을 사용하면 클러스터 또는 네임스페이스에서 포드 기반 가격 책정 모델을 기본적으로 사용할 수 있으며 많은 워크로드에 특별한 하드웨어 요구사항이 없는 경우에 유용합니다.

자세한 내용은 기본적으로 포드에 ComputeClass 적용을 참조하세요.

다음 단계