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

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

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

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

限制

Autopilot 模式僅支援搭配 Confidential 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 節點所需的權限,請要求管理員在 Google Cloud 專案中授予您下列 IAM 角色:

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

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

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

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

如要使用 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 數量。指定機密 VM 支援的 GPU 類型值。舉例來說,如果您選擇 nvidia-h100-80gb GPU 類型,就必須在這個欄位中指定 1 值。

  2. 建立 ComputeClass:

    kubectl apply -f PATH_TO_MANIFEST
    

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

  3. 如要在機密 GKE 節點上執行 GPU 工作負載,請在工作負載資訊清單中選取 ComputeClass。舉例來說,請將下列 Deployment 資訊清單 (選取 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 節點的新 Standard 模式叢集,以執行 GPU 工作負載時,請務必指定下列叢集設定:

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

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

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

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

在 Standard 節點集區中使用機密 GKE 節點和 GPU

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

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

    控制台

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

      前往 Kubernetes 叢集

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

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

    4. 按一下 「建立由使用者管理的節點集區」。系統會開啟「新增節點集區」頁面。

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

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

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

      1. 在「Machine configuration」(機器設定) 區段中,按一下「GPUs」(GPU)
      2. 在「GPU type」(GPU 類型) 選單中,選取 Confidential Computing 支援的 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. 在「Machine type」(機器類型) 區段中,請確認機器類型是機密 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 數量。指定 GPU 類型支援的 Confidential VM 值。舉例來說,如果您選擇 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:節點使用的機器類型。指定 Confidential VM 支援的 GPU 機型,該機型必須與所選 GPU 類型相容。
    • 使用 Flex-start 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 --reservation-affinity=none --no-enable-autorepair \
          --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=DRIVER_VERSION
      

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

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

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

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

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

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

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

疑難排解

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

後續步驟