使用機密 GKE 節點加密使用中的 GPU 工作負載資料

您可以在加密的機密 Google Kubernetes Engine 節點上執行工作負載,藉此加密使用中的 GPU 工作負載資料。本頁面說明安全工程師和作業人員如何提升加速工作負載 (例如 AI/機器學習工作) 的資料安全性。您必須熟悉下列概念:

關於在機密 GKE 節點上執行 GPU 工作負載

您可以使用下列任一方法,為 GPU 工作負載要求機密 GKE 節點:

限制

Autopilot 模式僅支援搭配機密 GKE 節點使用的 NVIDIA H100 (80 GB) GPU。

事前準備

開始之前,請務必先完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文中的指令。

需求條件

無論選擇哪種機密 GKE 節點設定方法,都必須符合下列所有規定:

  • 節點必須位於支援 NVIDIA 機密運算的可用區。 詳情請參閱「查看支援的區域」。
  • 節點必須使用支援的機型、機密運算技術和 GPU。詳情請參閱「支援的設定」。
  • 您必須擁有先占配額,才能在節點位置使用 GPU。舉例來說,如果您使用 NVIDIA H100 (80 GB) GPU,就必須有 compute.googleapis.com/preemptible_nvidia_h100_gpus 的配額。如要進一步瞭解如何管理配額,請參閱「查看及管理配額」。

除了上述規定外,您還必須符合特定條件,具體取決於您選擇的機密 GKE 節點設定方法,如下表所述:

設定方法 需求條件 限制
ComputeClasses
  • 您無法搭配 ComputeClass 使用彈性啟動和佇列式佈建。
  • 您無法使用 GPU 共用功能,例如分時或多實體 GPU。
標準模式下的手動設定
  • 使用 Spot VM、先占 VM、彈性啟動 (預先發布版),或彈性啟動搭配佇列式佈建。
  • 使用下列其中一個 GKE 版本:
    • 手動安裝 GPU 驅動程式: 1.32.2-gke.1297000 以上版本。
    • 自動安裝 GPU 驅動程式: 1.33.3-gke.1392000 以上版本。
    • 彈性啟動搭配佇列式佈建:1.32.2-gke.1652000 以上版本。
  • 如果為整個叢集啟用機密 GKE 節點,就無法使用彈性啟動 (預先發布版)。
  • 您無法使用 GPU 共用功能,例如分時或多實體 GPU。

必要的角色

如要取得建立機密 GKE 節點所需的權限,請要求管理員授予您 Cloud de Confiance 專案的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

使用 ComputeClass 執行機密 GPU 工作負載

您可以在 ComputeClass 中定義機密 GKE 節點設定。ComputeClass 是 Kubernetes 自訂資源,可讓您以宣告方式設定 GKE 自動調整資源配置和排程的節點設定。在執行 GKE 1.33.3-gke.1392000 以上版本的任何 Autopilot 或 Standard 叢集中,您都可以按照本節中的步驟操作。

如要使用 ComputeClass 在機密 GKE 節點上執行 GPU 工作負載,請按照下列步驟操作:

  1. 將下列 ComputeClass 資訊清單儲存為 YAML 檔案:

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

    更改下列內容:

    • COMPUTECLASS_NAME:ComputeClass 的名稱。
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY:要使用的機密運算技術,例如 TDX。選擇要使用的 GPU 支援的技術。

    • ZONE1,ZONE2:以半形逗號分隔的清單,列出要建立節點的區域,例如 ['us-central1-a','us-central1-b']。指定支援機密運算技術的可用區,以及要使用的機型。詳情請參閱「查看支援的區域」。

    • GPU_TYPE:要使用的 GPU 類型,例如 nvidia-h100-80gb。

    • GPU_COUNT:要附加至每個節點的 GPU 數量。請為 GPU 類型指定 Confidential VM 支援的值。舉例來說,如果您選擇 nvidia-h100-80gb GPU 類型,則必須在這個欄位中指定 1 值。

  2. 建立 ComputeClass:

    kubectl apply -f PATH_TO_MANIFEST
    

    將 PATH_TO_MANIFEST 替換為 ComputeClass 資訊清單檔案的路徑。

  3. 如要在機密 GKE 節點上執行 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: GPU_REQUEST
              requests:
                cpu: "4"
                memory: "16Gi"
    

    更改下列內容:

    • COMPUTECLASS_NAME:您建立的 ComputeClass 名稱。
    • GPU_REQUEST:容器中要使用的 GPU 數量。指定的值必須小於或等於 ComputeClass 的 gpu.count 欄位中指定的值。
  4. 建立 Deployment:

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    將 PATH_TO_DEPLOYMENT_MANIFEST 替換為 Deployment 資訊清單的路徑。

建立 GPU 工作負載時,GKE 會使用 ComputeClass 中的設定,建立附加 GPU 的機密 GKE 節點。

在 GKE Standard 中手動設定機密 GKE 節點

您可以在 Standard 模式叢集或節點集區中,透過機密 GKE 節點執行 GPU 工作負載。

在新的 Standard 叢集中啟用機密 GKE 節點

您可以為整個標準叢集啟用機密 GKE 節點,這樣您建立的每個 GPU 節點集區都會使用相同的機密運算技術。建立使用機密 GKE 節點的 GPU 工作負載時,請務必指定下列叢集設定:

  • 位置:支援 NVIDIA 機密運算的區域或可用區。詳情請參閱「查看支援的區域」。
  • 機密運算類型:支援 GPU 的機密運算技術。詳情請參閱「支援的設定」。
  • 叢集版本:視您要如何安裝 GPU 驅動程式,選擇下列其中一個版本:

    • 手動安裝 GPU 驅動程式:1.32.2-gke.1297000 以上版本。
    • 自動安裝 GPU 驅動程式:1.33.3-gke.1392000 以上版本。

您可以選擇為 GKE 在叢集中建立的預設節點集區設定 GPU。不過,我們建議您為 GPU 使用獨立的節點集區,這樣叢集中至少會有一個節點集區可以執行任何工作負載。

詳情請參閱「在 Standard 叢集上啟用機密 GKE 節點」。

在 Standard 節點集區中,使用搭載 GPU 的機密 GKE 節點

如果叢集未啟用機密 GKE 節點,您可以在特定新的或現有的 GPU 節點集區中啟用機密 GKE 節點。控制層和節點集區必須符合「可用性」一節中的規定。設定節點集區時,您可以選擇自動或手動安裝 GPU 驅動程式。

  • 如要建立使用機密 GKE 節點的新 GPU 節點集區,請選取下列其中一個選項:

    控制台

    1. 在 Cloud de Confiance 控制台中,前往「Kubernetes clusters」(Kubernetes 叢集) 頁面:

      前往 Kubernetes 叢集

    2. 按一下要修改的標準模式叢集名稱。

    3. 按一下「Nodes」(節點) 分頁標籤。

    4. 按一下「 建立由使用者自行管理的節點集區」。「新增節點集區」頁面隨即開啟。

    5. 在「Node pool details」(節點集區詳細資料) 窗格中,執行下列操作:

      1. 選取「指定節點位置」。
      2. 僅選取「可用性」部分列出的支援區域。
      3. 確認控制層版本是「適用性」部分列出的其中一個版本。
    6. 按一下導覽選單中的「節點」。

    7. 在「Configure node settings」(選取節點設定) 窗格中,執行下列操作:

      1. 在「機器設定」部分,按一下「GPU」。
      2. 在「GPU type」(GPU 類型) 選單中,選取機密運算支援的 GPU 類型。
      3. 在「Number of GPUs」(GPU 數量) 選單中,選取要附加至各節點的 GPU 數量。選取所選 GPU 類型支援的值。舉例來說,如果您選擇 NVIDIA H100 (80 GB) 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. 在「機型」部分,請確認機型是 Confidential VM 支援的 GPU 機型,且適用於所選 GPU 類型。

      7. 選取「啟用 Spot VM 上的節點」或設定使用佇列式佈建的彈性啟動型 VM。

    8. 準備好建立節點集區時,請按一下「建立」。

    gcloud

    您可以建立 GPU 節點集區,在 Spot VM 上執行機密 GKE 節點,或使用彈性啟動型 VM 搭配佇列式佈建。

    • 建立 GPU 節點集區,在 Spot VM 上執行機密 GKE 節點:

      gcloud container node-pools create NODE_POOL_NAME \
          --cluster=CLUSTER_NAME \
          --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY \
          --location=LOCATION \
          --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \
          --spot \
          --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=DRIVER_VERSION \
          --machine-type=MACHINE_TYPE
      

      更改下列內容:

      • NODE_POOL_NAME:新節點集區的名稱。
      • CLUSTER_NAME:現有叢集的名稱。
      • CONFIDENTIAL_COMPUTE_TECHNOLOGY:要使用的機密運算技術,例如 TDX。選擇要使用的 GPU 支援的技術。
      • LOCATION:新節點集區的位置。該位置必須支援在機密 GKE 節點中使用 GPU。
      • NODE_LOCATION1,NODE_LOCATION2,...:以半形逗號分隔的清單,列出要執行節點的可用區。指定支援機密運算技術的可用區,以及要使用的機型。詳情請參閱「查看支援的可用區」。
      • GPU_TYPE:要使用的 GPU 類型,例如 nvidia-h100-80gb。
      • GPU_COUNT:要附加至每個節點的 GPU 數量。請指定 Confidential VM 支援的 GPU 類型值。舉例來說,如果您選擇 nvidia-h100-80gb GPU 類型,則必須在這個欄位中指定 1 值。

      • 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 以上版本。
      • MACHINE_TYPE:節點使用的機器類型。指定機密 VM 支援的 GPU 機型,並搭配所選 GPU 類型使用。
    • 使用彈性啟動型 VM 和佇列式佈建功能,建立執行機密 GKE 節點的 GPU 節點集區:

      gcloud container node-pools create NODE_POOL_NAME \
          --cluster=CLUSTER_NAME \
          --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \
          --machine-type=MACHINE_TYPE \
          --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY \
          --location=LOCATION \
          --flex-start --enable-queued-provisioning \
          --enable-autoscaling --num-nodes=0 --total-max-nodes=TOTAL_MAX_NODES \
          --location-policy=ANY --no-enable-autorepair \
          --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=DRIVER_VERSION
      

      將 TOTAL_MAX_NODES 替換為節點集區可自動調度的節點數量上限。

      如要進一步瞭解彈性啟動搭配佇列式佈建的設定選項,請參閱「使用彈性啟動搭配佇列式佈建執行大規模工作負載」。

  • 如要更新現有節點集區以使用機密運算,請參閱「更新現有節點集區」。

手動安裝支援機密 GKE 節點的 GPU 驅動程式

如果您在建立或更新節點集區時,未啟用自動安裝驅動程式功能,則必須手動安裝支援機密 GKE 節點的 GPU 驅動程式。

這項變更需要重新建立節點,可能會中斷執行中的工作負載。如要瞭解這項特定變更的詳細資料,請在「手動變更,使用節點升級策略重建節點,但不遵守維護政策」表格中找到對應的資料列。如要進一步瞭解節點更新,請參閱「規劃節點更新中斷情形」。

如需操作說明,請參閱「手動安裝 NVIDIA GPU 驅動程式」中的「COS」分頁。

疑難排解

如需疑難排解資訊,請參閱「排解 GKE 中的 GPU 問題」。

後續步驟