暗号化された Confidential Google Kubernetes Engine Node でワークロードを実行することで、使用中の GPU ワークロード データを暗号化できます。このページでは、AI/ML タスクなどの高速化されたワークロードでデータのセキュリティを強化する方法について説明します。次のコンセプトを理解しておく必要があります。
Confidential GKE Node での GPU ワークロードの実行について
次のいずれかの方法で、GPU ワークロードの Confidential GKE Node をリクエストできます。
- GKE ComputeClasses を使用して、GPU ワークロード用の Confidential GKE Node を自動的にプロビジョニングします。この方法は、Autopilot クラスタと Standard クラスタで使用できます。詳細については、ComputeClass を使用して Confidential GKE Node で GPU ワークロードを実行するをご覧ください。
- Standard クラスタまたはノードプール用に Confidential GKE Node を手動で構成します。詳細については、GKE Standard で Confidential GKE Node を手動で構成するをご覧ください。
始める前に
作業を始める前に、次のタスクが完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components update
コマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。
要件と制限事項
選択する Confidential GKE Node の構成方法に関係なく、次の要件をすべて満たす必要があります。
- ノードは、NVIDIA Confidential Computing をサポートするゾーンに存在する必要があります。詳細については、サポートされているゾーンを表示するをご覧ください。
- ノードは、1 つの NVIDIA H100 80 GB GPU と
a3-highgpu-1g
マシンタイプのみを使用する必要があります。 - ノードは Intel TDX Confidential Computing テクノロジーを使用する必要があります。
- ノードのロケーションにプリエンプティブル H100 80 GB GPU(
compute.googleapis.com/preemptible_nvidia_h100_gpus
)の割り当てが必要です。割り当ての管理の詳細については、割り当ての表示と管理をご覧ください。
これらの要件に加えて、次の表に示すように、選択した Confidential GKE Node の構成方法に応じて特定の条件を満たす必要があります。
構成方法 | 要件 | 制限事項 |
---|---|---|
ComputeClasses |
|
|
Standard モードでの手動構成 |
|
|
必要なロール
Confidential GKE Node の作成に必要な権限を取得するには、 Google Cloud プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
Confidential GKE Node を作成する: Kubernetes Engine クラスタ管理者 (
roles/container.clusterAdmin
) -
GPU ワークロードをデプロイする: Kubernetes Engine デベロッパー (
roles/container.developer
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
ComputeClass を使用して機密性の高い GPU ワークロードを実行する
Confidential GKE Node の構成は ComputeClass で定義できます。ComputeClass は、GKE の自動スケーリングとスケジューリングのノード構成を宣言的に設定できる Kubernetes カスタム リソースです。このセクションの手順は、GKE バージョン 1.33.3-gke.1392000 以降を実行する任意の Autopilot クラスタまたは Standard クラスタで実行できます。
ComputeClass を使用して Confidential GKE Node で GPU ワークロードを実行する手順は次のとおりです。
次のマニフェストを 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 Confidential Computing テクノロジーをサポートするゾーンを指定します。詳細については、サポートされているゾーンを表示するをご覧ください。
ComputeClass を作成します。
kubectl apply -f PATH_TO_MANIFEST
PATH_TO_MANIFEST
は、ComputeClass マニフェスト ファイルのパスに置き換えます。Confidential GKE Node で GPU ワークロードを実行するには、ワークロード マニフェストで ComputeClass を選択します。たとえば、ComputeClass と GPU を選択する次の Deployment マニフェストを 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 の名前に置き換えます。Deployment を作成します。
kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
PATH_TO_DEPLOYMENT_MANIFEST
は、Deployment マニフェストのパスに置き換えます。
GPU ワークロードを作成すると、GKE は ComputeClass の構成を使用して、GPU が割り当てられた Confidential GKE Node を作成します。
GKE Standard で Confidential GKE Node を手動で構成する
Standard モードのクラスタまたはノードプールで、Confidential GKE Node 上で GPU ワークロードを実行できます。GPU ワークロードの場合、Confidential GKE Node は Intel TDX Confidential Computing テクノロジーを使用する必要があります。
新しい Standard クラスタで Confidential GKE Node を有効にする
Standard クラスタ全体で Confidential GKE Node を有効にすると、作成するすべての GPU ノードプールで同じ Confidential Computing テクノロジーが使用されます。GPU ワークロードに Confidential GKE Node を使用する新しい Standard モードのクラスタを作成する場合は、次のクラスタ設定を指定してください。
- ロケーション: NVIDIA Confidential Computing をサポートするリージョンまたはゾーン。詳細については、サポートされているゾーンを表示するをご覧ください。
- Confidential Computing のタイプ: Intel TDX
クラスタ バージョン: GPU ドライバのインストール方法に応じて、次のいずれかのバージョン。
- GPU ドライバの手動インストール: 1.32.2-gke.1297000 以降。
- GPU ドライバの自動インストール: 1.33.3-gke.1392000 以降。
必要に応じて、クラスタに GKE が作成するデフォルトのノードプールに GPU を構成できます。ただし、クラスタ内の少なくとも 1 つのノードプールで任意のワークロードを実行できるように、GPU に別のノードプールを使用することをおすすめします。
詳細については、Standard クラスタで Confidential GKE Node を有効にするをご覧ください。
Standard ノードプールで GPU を使用して Confidential GKE Node を使用する
クラスタで Confidential GKE Node が有効になっていない場合は、特定の新規または既存の GPU ノードプールで Confidential GKE Node を有効にできます。コントロール プレーンとノードプールは、対象セクションの要件を満たしている必要があります。ノードプールを構成するときに、GPU ドライバを自動または手動でインストールできます。
Confidential GKE Node を使用する新しい GPU ノードプールを作成するには、次のいずれかのオプションを選択します。
コンソール
Google Cloud コンソールで [Kubernetes クラスタ] ページに移動します。
変更する Standard モードクラスタの名前をクリックします。
[
ノードプールを追加] をクリックします。[ノードプールの追加] ページが開きます。[ノードプールの詳細] ペインで、次の操作を行います。
ナビゲーション メニューで、[ノード] をクリックします。
[ノード設定を構成する] ペインで、次の操作を行います。
- [マシンの構成] セクションで、[GPU] をクリックします。
- [GPU のタイプ] メニューで、[NVIDIA H100 80 GB] を選択します。
- [GPU の数] メニューで、1 を選択します。
- [GPU 共有を有効にする] がオフになっていることを確認します。
[GPU ドライバのインストール] セクションで、次のいずれかの方法を選択します。
Google が管理: GKE はドライバを自動的にインストールします。このオプションを選択した場合は、[バージョン] プルダウン リストで、次のいずれかのドライバ バージョンを選択します。
- Default: GKE バージョンに対応する、デフォルトのドライバ バージョンをインストールします。GKE バージョン 1.33.3-gke.1392000 以降が必要です。
- 最新: ノードの GKE バージョンに対応する最新のドライバ バージョンをインストールします。GKE バージョン 1.33.3-gke.1392000 以降が必要です。
ユーザー管理: ドライバの自動インストールをスキップします。このオプションを選択した場合は、互換性のある GPU ドライバを手動でインストールする必要があります。1.32.2-gke.1297000 以降が必要です。
[マシンタイプ] セクションで、マシンタイプが
a3-highgpu-1g
であることを確認します。[Spot VM 上にノードを作成する] または [configure Flex-start VMs with queued provisioning] を選択します。
ノードプールを作成する準備ができたら、[作成] をクリックします。
gcloud
Spot VM で Confidential GKE Node を実行する GPU ノードプールを作成できます。あるいは、キューに格納されたプロビジョニングで Flex Start VM を使用して作成することも可能です。
Spot VM で Confidential GKE Node を実行する 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 Confidential Computing の使用をサポートしている必要があります。詳細については、サポートされているゾーンを表示するをご覧ください。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 VM を使用して 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 Computing テクノロジーを使用するように既存のノードプールを更新するには、既存のノードプールを更新するをご覧ください。
Confidential GKE Node をサポートする GPU ドライバを手動でインストールする
ノードプールの作成または更新時にドライバの自動インストールを有効にしなかった場合は、Confidential GKE Node をサポートする GPU ドライバを手動でインストールする必要があります。
この変更を行うにはノードの再作成が必要になり、実行中のワークロードが中断する可能性があります。この変更について詳しくは、メンテナンス ポリシーに準拠せずにノード アップグレード戦略を使用してノードを再作成する手動変更の表で対応する行をご覧ください。ノードの更新の詳細については、ノードの更新による中断の計画をご覧ください。
手順については、NVIDIA GPU ドライバを手動でインストールするの [COS] タブをご覧ください。
トラブルシューティング
トラブルシューティング情報については、GKE での GPU のトラブルシューティングをご覧ください。
次のステップ
- GPU ノードが Confidential GKE Node を使用していることを確認する
- GPU ノードにワークロードをデプロイする
- GPU を使用して大規模なワークロードを実行する方法について学習する