您可以在加密的機密 Google Kubernetes Engine 節點上執行工作負載,藉此加密使用中的 GPU 工作負載資料。本頁面說明資安工程師和操作人員如何提高加速工作負載 (例如 AI/機器學習工作) 的資料安全性。您應熟悉下列概念:
關於在機密 GKE 節點上執行 GPU 工作負載
您可以透過下列任一方法,為 GPU 工作負載要求機密 GKE 節點:
- 使用 GKE ComputeClasses,自動為 GPU 工作負載佈建機密 GKE 節點。這個方法適用於 Autopilot 和 Standard 叢集。詳情請參閱「使用 ComputeClass 在機密 GKE 節點上執行 GPU 工作負載」一節。
- 手動為 Standard 叢集或節點集區設定機密 GKE 節點。詳情請參閱「在 GKE Standard 中手動設定機密 GKE 節點」一節。
限制
Autopilot 模式僅支援 NVIDIA H100 (80 GB) GPU 搭配機密 GKE 節點。
事前準備
開始之前,請確認您已執行下列工作:
- 啟用 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 |
|
|
| 在標準模式中手動設定 |
|
|
必要的角色
如要取得建立機密 GKE 節點所需的權限,請要求管理員授予您 Google Cloud 專案的下列 IAM 角色:
-
建立機密 GKE 節點:Kubernetes Engine 叢集管理員 (
roles/container.clusterAdmin) -
部署 GPU 工作負載:Kubernetes Engine 開發人員 (
roles/container.developer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
使用 ComputeClass 執行機密 GPU 工作負載
您可以在 ComputeClass 中定義機密 GKE 節點設定。ComputeClass 是 Kubernetes 自訂資源,可讓您以宣告方式設定 GKE 自動調度資源和排程的節點設定。只要 Autopilot 或 Standard 叢集執行 GKE 1.33.3-gke.1392000 以上版本,即可按照本節步驟操作。
如要使用 ComputeClass 在機密 GKE 節點上執行 GPU 工作負載,請按照下列步驟操作:
將下列 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-80gbGPU 類型,則必須在這個欄位中指定1值。
建立 ComputeClass:
kubectl apply -f PATH_TO_MANIFEST將
PATH_TO_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。如要在機密 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欄位中指定的值。
建立 Deployment:
kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST將
PATH_TO_DEPLOYMENT_MANIFEST替換為 Deployment 資訊清單的路徑。
建立 GPU 工作負載時,GKE 會使用 ComputeClass 中的設定,建立附加 GPU 的機密 GKE 節點。
在 GKE Standard 中手動設定機密 GKE 節點
您可以在標準模式叢集或節點集區中,透過機密 GKE 節點執行 GPU 工作負載。
在新的 Standard 叢集中啟用機密 GKE 節點
您可以為整個標準叢集啟用機密 GKE 節點,這樣一來,您建立的每個 GPU 節點集區都會使用相同的機密運算技術。建立新的 Standard 模式叢集,並使用機密 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 節點集區,請選取下列其中一個選項:
控制台
在 Google Cloud 控制台中,前往「Kubernetes clusters」(Kubernetes 叢集) 頁面:
按一下要修改的標準模式叢集名稱。
按一下「Nodes」(節點) 分頁標籤。
按一下「 建立由使用者自行管理的節點集區」。「Add a node pool」(新增節點集區) 頁面隨即開啟。
在「Node pool details」(節點集區詳細資料) 窗格中,執行下列操作:
- 選取「Specify node locations」(指定節點位置)。
- 請務必選取「Availability」(可用性) 區段中列出的支援可用區。
- 確認控制層版本是「可用性」一節中列出的其中一個版本。
按一下導覽選單中的「Nodes」(節點)。
在「Configure node settings」(選取節點設定) 窗格中,執行下列操作:
- 在「機器設定」部分,按一下「GPU」。
- 在「GPU type」(GPU 類型) 選單中,選取機密運算支援的 GPU 類型。
- 在「Number of GPUs」(GPU 數量) 選單中,選取要附加至各節點的 GPU 數量。請選取所選 GPU 類型支援的值。舉例來說,如果您選擇 NVIDIA H100 (80 GB) GPU,請選取「1」。
- 確認未選取「啟用 GPU 共用功能」。
在「GPU Driver installation」(GPU 驅動程式安裝) 區段中,選取下列其中一個選項:
Google 代管:GKE 會自動安裝驅動程式。如果選取這個選項,請在「Version」(版本) 下拉式清單中選取下列其中一個驅動程式版本:
- 預設:安裝節點 GKE 版本的預設驅動程式版本。必須使用 GKE 1.33.3-gke.1392000 以上版本。
- 最新:安裝節點 GKE 版本的最新驅動程式版本。必須使用 GKE 1.33.3-gke.1392000 以上版本。
使用者自行管理:略過自動安裝驅動程式。如果選取這個選項,您必須手動安裝相容的 GPU 驅動程式。必須使用 1.32.2-gke.1297000 以上版本。
在「Machine type」(機型) 區段中,確認機型是 Confidential VM 支援的 GPU 機型,適用於所選 GPU 類型。
選取「Enable nodes on Spot VM」(啟用 Spot VM 上的節點),或設定採用佇列式佈建的彈性啟動型 VM。
準備好建立節點集區時,請按一下「Create」(建立)。
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-80gbGPU 類型,則必須在這個欄位中指定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 機型。
使用彈性啟動型 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 問題」。