Confidential GKE Node를 통한 사용 중 GPU 워크로드 데이터 암호화


암호화된 Confidential Google Kubernetes Engine 노드에서 워크로드를 실행하여 사용 중인 GPU 워크로드 데이터를 암호화할 수 있습니다. 이 페이지에서는 보안 엔지니어와 운영자가 AI/ML 작업과 같은 가속화된 워크로드의 데이터 보안을 개선하는 방법을 보여줍니다. 다음 개념을 잘 알고 있어야 합니다.

Confidential GKE Node에서 GPU 워크로드 실행 정보

다음 방법 중 하나를 사용하여 GPU 워크로드에 대해 Confidential GKE Node를 요청할 수 있습니다.

시작하기 전에

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

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화하세요. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

요구사항 및 제한사항

선택한 Confidential GKE Node 구성 방법에 관계없이 다음 요구사항을 모두 충족해야 합니다.

  • 노드는 NVIDIA 컨피덴셜 컴퓨팅을 지원하는 영역에 있어야 합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.
  • 노드는 NVIDIA H100 80GB GPU 1개와 a3-highgpu-1g 머신 유형만 사용해야 합니다.
  • 노드는 Intel TDX 컨피덴셜 컴퓨팅 기술을 사용해야 합니다.
  • 노드 위치에 선점형 H100 80GB GPU(compute.googleapis.com/preemptible_nvidia_h100_gpus) 할당량이 있어야 합니다. 할당량 관리에 관한 자세한 내용은 할당량 보기 및 관리를 참고하세요.

이러한 요구사항 외에도 다음 표에 설명된 대로 선택한 Confidential GKE Node 구성 방법에 따라 특정 조건을 충족해야 합니다.

구성 방법 요구사항 제한사항
ComputeClasses
  • ComputeClasses를 사용하면 큐에 추가된 프로비저닝을 통한 flex-start를 사용할 수 없습니다.
  • 시간 공유 또는 멀티 인스턴스 GPU와 같은 GPU 공유 기능을 사용할 수 없습니다.
표준 모드에서 수동 구성
  • 스팟 VM, 선점형 VM, flex-start(미리보기) 또는 큐에 추가된 프로비저닝을 통한 flex-start를 사용합니다.
  • 다음 GKE 버전 중 하나를 사용하세요.
    • 수동 GPU 드라이버 설치: 1.32.2-gke.1297000 이상
    • 자동 GPU 드라이버 설치: 1.33.3-gke.1392000 이상
    • 큐에 추가된 프로비저닝을 통한 flex-start: 1.32.2-gke.1652000 이상
  • 전체 클러스터에 대해 Confidential GKE Node를 사용 설정하면 플렉스 시작(프리뷰)을 사용할 수 없습니다.
  • 시간 공유 또는 멀티 인스턴스 GPU와 같은 GPU 공유 기능을 사용할 수 없습니다.

필요한 역할

컨피덴셜 GKE 노드를 만드는 데 필요한 권한을 얻으려면 관리자에게 Google Cloud 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

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

ComputeClasses를 사용하여 컨피덴셜 GPU 워크로드 실행

ComputeClass에서 Confidential GKE Node 구성을 정의할 수 있습니다. ComputeClass는 GKE 자동 확장 및 예약의 노드 구성을 선언적으로 설정할 수 있는 Kubernetes 커스텀 리소스입니다. GKE 버전 1.33.3-gke.1392000 이상을 실행하는 Autopilot 또는 Standard 클러스터에서 이 섹션의 단계를 따를 수 있습니다.

ComputeClass를 사용하여 Confidential GKE Node에서 GPU 워크로드를 실행하려면 다음 단계를 따르세요.

  1. 다음 ComputeClass 매니페스트를 YAML 파일로 저장합니다.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTECLASS_NAME
    spec:
      nodePoolConfig:
        confidentialNodeType: TDX
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2']
      priorities:
      - gpu:
          type: nvidia-h100-80gb
          count: 1
          driverVersion: default
        spot: true
      activeMigration:
        optimizeRulePriority: true
      nodePoolAutoCreation:
        enabled: true
      whenUnsatisfiable: DoNotScaleUp
    

    다음을 바꿉니다.

    • COMPUTECLASS_NAME: ComputeClass의 이름입니다.
    • ZONE1,ZONE2: 노드를 생성할 영역의 쉼표로 구분된 목록입니다(예: ['us-central1-a','us-central1-b']). Intel TDX 컨피덴셜 컴퓨팅 기술을 지원하는 영역을 지정합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.
  2. ComputeClass를 만듭니다.

    kubectl apply -f PATH_TO_MANIFEST
    

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

  3. Confidential GKE Node에서 GPU 워크로드를 실행하려면 워크로드 매니페스트에서 ComputeClass를 선택합니다. 예를 들어 ComputeClass와 GPU를 선택하는 다음 배포 매니페스트를 YAML 파일로 저장합니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: confidential-gpu-deployment
      labels:
        app: conf-gpu
    spec:
      selector:
        matchLabels:
          app: conf-gpu
      replicas: 1
      template:
        metadata:
          labels:
            app: conf-gpu
        spec:
          nodeSelector:
            cloud.google.com/compute-class: COMPUTECLASS_NAME
          containers:
          - name: example-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              limits:
                cpu: "4"
                memory: "16Gi"
                nvidia.com/gpu: 1
              requests:
                cpu: "4"
                memory: "16Gi"
    

    COMPUTECLASS_NAME을 생성한 ComputeClass의 이름으로 바꿉니다.

  4. 배포를 만듭니다.

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    PATH_TO_DEPLOYMENT_MANIFEST을 배포 매니페스트의 경로로 바꿉니다.

GPU 워크로드를 만들면 GKE는 ComputeClass의 구성을 사용하여 연결된 GPU가 있는 Confidential GKE Node를 만듭니다.

GKE Standard에서 Confidential GKE Node 수동 구성

Standard 모드 클러스터 또는 노드 풀의 Confidential GKE Node에서 GPU 워크로드를 실행할 수 있습니다. GPU 워크로드의 경우 Confidential GKE Node는 Intel TDX 컨피덴셜 컴퓨팅 기술을 사용해야 합니다.

새 Standard 클러스터에서 Confidential GKE Node 사용 설정

전체 표준 클러스터에 대해 Confidential GKE Node를 사용 설정하여 생성하는 모든 GPU 노드 풀이 동일한 컨피덴셜 컴퓨팅 기술을 사용하도록 할 수 있습니다. GPU 워크로드에 컨피덴셜 GKE 노드를 사용하는 새 Standard 모드 클러스터를 만들 때는 다음 클러스터 설정을 지정해야 합니다.

  • 위치: NVIDIA 컨피덴셜 컴퓨팅을 지원하는 리전 또는 영역 자세한 내용은 지원되는 영역 보기를 참고하세요.
  • 컨피덴셜 컴퓨팅 유형: Intel TDX
  • 클러스터 버전: GPU 드라이버를 설치하려는 방식에 따라 다음 버전 중 하나입니다.

    • 수동 GPU 드라이버 설치: 1.32.2-gke.1297000 이상
    • 자동 GPU 드라이버 설치: 1.33.3-gke.1392000 이상

원하는 경우 GKE가 클러스터에서 만드는 기본 노드 풀에 GPU를 구성할 수 있습니다. 하지만 클러스터의 하나 이상의 노드 풀에서 모든 워크로드를 실행할 수 있도록 GPU에 별도의 노드 풀을 사용하는 것이 좋습니다.

자세한 내용은 Standard 클러스터에서 Confidential GKE Node 사용 설정을 참고하세요.

Standard 노드 풀에서 GPU와 함께 Confidential GKE Node 사용

클러스터에서 Confidential GKE Node가 사용 설정되지 않은 경우 특정 신규 또는 기존 GPU 노드 풀에서 Confidential GKE Node를 사용 설정할 수 있습니다. 컨트롤 플레인과 노드 풀은 가용성 섹션의 요구사항을 충족해야 합니다. 노드 풀을 구성할 때 GPU 드라이버를 자동으로 또는 수동으로 설치할 수 있습니다.

  • Confidential GKE Node를 사용하는 새 GPU 노드 풀을 만들려면 다음 옵션 중 하나를 선택하세요.

    콘솔

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

      Kubernetes 클러스터로 이동

    2. 수정할 표준 모드 클러스터의 이름을 클릭합니다.

    3. 노드 풀 추가를 클릭합니다. 노드 풀 추가 페이지가 열립니다.

    4. 노드 풀 세부정보 창에서 다음을 수행합니다.

      1. 노드 위치 지정을 선택합니다.
      2. 가용성 섹션에 나열된 지원되는 영역만 선택합니다.
      3. 컨트롤 플레인 버전이 사용 가능 여부 섹션에 나열된 버전 중 하나인지 확인합니다.
    5. 탐색 메뉴에서 노드를 클릭합니다.

    6. 노드 설정 구성 창에서 다음을 수행합니다.

      1. 머신 구성 섹션에서 GPU를 클릭합니다.
      2. GPU 유형 메뉴에서 NVIDIA H100 80GB를 선택합니다.
      3. GPU 수 메뉴에서 1을 선택합니다.
      4. GPU 공유 사용 설정이 선택되지 않았는지 확인합니다.
      5. GPU 드라이버 설치 섹션에서 다음 옵션 중 하나를 선택합니다.

        • Google 관리형: GKE가 드라이버를 자동으로 설치합니다. 이 옵션을 선택하는 경우 버전 드롭다운 목록에서 다음 드라이버 버전 중 하나를 선택합니다.

          • 기본값: 노드 GKE 버전의 기본 드라이버 버전을 설치합니다. GKE 버전 1.33.3-gke.1392000 이상이 필요합니다.
          • 최신: 노드 GKE 버전의 최신 드라이버 버전을 설치합니다. GKE 버전 1.33.3-gke.1392000 이상이 필요합니다.
        • 사용자 관리형: 자동 드라이버 설치를 건너뜁니다. 이 옵션을 선택하는 경우 호환되는 GPU 드라이버를 수동으로 설치해야 합니다. 1.32.2-gke.1297000 이상이 필요합니다.

      6. 머신 유형 섹션에서 머신 유형이 a3-highgpu-1g인지 확인합니다.

      7. 스팟 VM에 노드 사용 설정을 선택하거나 큐에 추가된 프로비저닝으로 flex-start를 구성합니다.

    7. 노드 풀을 만들 준비가 되면 만들기를 클릭합니다.

    gcloud

    스팟 VM에서 또는 대기열에 추가된 프로비저닝으로 유연하게 시작을 사용하여 Confidential GKE Node를 실행하는 GPU 노드 풀을 만들 수 있습니다.

    • 스팟 VM에서 컨피덴셜 GKE 노드를 실행하는 GPU 노드 풀을 만듭니다.

      gcloud container node-pools create NODE_POOL_NAME \
          --cluster=CLUSTER_NAME \
          --confidential-node-type=tdx --location=LOCATION \
          --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \
          --spot --accelerator=type=nvidia-h100-80gb,count=1,gpu-driver-version=DRIVER_VERSION \
          --machine-type=a3-highgpu-1g
      

      다음을 바꿉니다.

      • NODE_POOL_NAME: 새 노드 풀의 이름입니다.
      • CLUSTER_NAME: 기존 클러스터의 이름입니다.
      • LOCATION: 새 노드 풀의 위치입니다. 위치에서 Confidential GKE Node의 GPU 사용을 지원해야 합니다.
      • NODE_LOCATION1,NODE_LOCATION2,...: 노드를 실행할 영역의 쉼표로 구분된 목록입니다. 이러한 영역은 NVIDIA 컨피덴셜 컴퓨팅 사용을 지원해야 합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.
      • DRIVER_VERSION: 설치할 GPU 드라이버 버전입니다. 다음 값 중 하나를 지정합니다.

      • default: 노드 GKE 버전의 기본 드라이버 버전을 설치합니다. GKE 버전 1.33.3-gke.1392000 이상이 필요합니다.

      • latest: 노드 GKE 버전의 최신 드라이버 버전을 설치합니다. GKE 버전 1.33.3-gke.1392000 이상이 필요합니다.

      • disabled: 자동 드라이버 설치를 건너뜁니다. 이 값을 지정하는 경우 호환되는 GPU 드라이버를 수동으로 설치해야 합니다. 1.32.2-gke.1297000 이상이 필요합니다.

    • 큐에 추가된 프로비저닝을 통한 flex-start를 사용하여 Confidential GKE Node를 실행하는 GPU 노드 풀을 만듭니다.

      gcloud container node-pools create NODE_POOL_NAME \
          --cluster=CLUSTER_NAME \
          --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \
          --machine-type=a3-highgpu-1g --confidential-node-type=tdx \
          --location=LOCATION \
          --flex-start --enable-queued-provisioning \
          --enable-autoscaling --num-nodes=0 --total-max-nodes=TOTAL_MAX_NODES \
          --location-policy=ANY --reservation-affinity=none --no-enable-autorepair \
          --accelerator=type=nvidia-h100-80gb,count=1,gpu-driver-version=DRIVER_VERSION
      

      TOTAL_MAX_NODES를 노드 풀이 자동으로 확장할 수 있는 최대 노드 수로 바꿉니다.

      큐에 추가된 프로비저닝을 통한 flex-start의 구성 옵션에 대한 자세한 내용은 큐에 추가된 프로비저닝을 통한 flex-start로 대규모 워크로드 실행을 참고하세요.

  • Intel TDX 컨피덴셜 컴퓨팅 기술을 사용하도록 기존 노드 풀을 업데이트하려면 기존 노드 풀 업데이트를 참고하세요.

Confidential GKE Node를 지원하는 GPU 드라이버 수동 설치

노드 풀을 만들거나 업데이트할 때 자동 드라이버 설치를 사용 설정하지 않은 경우 컨피덴셜 GKE 노드를 지원하는 GPU 드라이버를 수동으로 설치해야 합니다.

이 변경사항을 적용하려면 노드를 다시 만들어야 하므로 실행 중인 워크로드가 중단될 수 있습니다. 이 특정 변경사항에 관한 자세한 내용은 유지보수 정책을 준수하지 않고 노드 업그레이드 전략을 사용하여 노드를 다시 만드는 수동 변경사항 표에서 해당 행을 찾으세요. 노드 업데이트에 대한 자세한 내용은 노드 업데이트 중단 계획을 참조하세요.

자세한 내용은 NVIDIA GPU 드라이버 수동 설치의 'COS' 탭을 참고하세요.

문제 해결

문제 해결 정보는 GKE에서 GPU 문제 해결을 참고하세요.

다음 단계