使用中の GPU ワークロード データを Confidential GKE Node で暗号化する

暗号化された Confidential Google Kubernetes Engine Node でワークロードを実行することで、使用中の 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 コマンドを実行して最新のバージョンを取得します。以前のバージョンの 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
  • Spot VM または Flex Startプレビュー)を使用します。
  • GKE バージョン 1.33.3-gke.1392000 以降を使用します。
  • ComputeClass でのキューに格納されたプロビジョニングで Flex Start を使用することはできません。
  • タイムシェアリングやマルチインスタンス GPU などの GPU 共有機能は使用できません。
Standard モードでの手動構成
  • Spot 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 を有効にすると、Flex Start(プレビュー)を使用できません。
  • タイムシェアリングやマルチインスタンス GPU などの GPU 共有機能は使用できません。

必要なロール

Confidential GKE Node の作成に必要な権限を取得するには、 Google Cloud プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

ComputeClass を使用して機密性の高い GPU ワークロードを実行する

Confidential GKE Node の構成は ComputeClass で定義できます。ComputeClass は、GKE の自動スケーリングとスケジューリングのノード構成を宣言的に設定できる Kubernetes カスタム リソースです。このセクションの手順は、GKE バージョン 1.33.3-gke.1392000 以降を実行する任意の Autopilot クラスタまたは Standard クラスタで実行できます。

ComputeClass を使用して Confidential GKE Node で GPU ワークロードを実行する手順は次のとおりです。

  1. 次のマニフェストを 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 テクノロジーをサポートするゾーンを指定します。詳細については、サポートされているゾーンを表示するをご覧ください。
  2. ComputeClass を作成します。

    kubectl apply -f PATH_TO_MANIFEST
    

    PATH_TO_MANIFEST は、ComputeClass マニフェスト ファイルのパスに置き換えます。

  3. 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 の名前に置き換えます。

  4. 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 ノードプールを作成するには、次のいずれかのオプションを選択します。

    コンソール

    1. Google Cloud コンソールで [Kubernetes クラスタ] ページに移動します。

      Kubernetes クラスタに移動

    2. 変更する Standard モードクラスタの名前をクリックします。

    3. [ノードプールを追加] をクリックします。[ノードプールの追加] ページが開きます。

    4. [ノードプールの詳細] ペインで、次の操作を行います。

      1. [ノードのロケーションを指定する] を選択します。
      2. 対象セクションに記載されているサポートされているゾーンのみを選択します。
      3. コントロール プレーンのバージョンが、対象セクションに記載されているバージョンのいずれかであることを確認します。
    5. ナビゲーション メニューで、[ノード] をクリックします。

    6. [ノード設定を構成する] ペインで、次の操作を行います。

      1. [マシンの構成] セクションで、[GPU] をクリックします。
      2. [GPU のタイプ] メニューで、[NVIDIA H100 80 GB] を選択します。
      3. [GPU の数] メニューで、1 を選択します。
      4. [GPU 共有を有効にする] がオフになっていることを確認します。
      5. [GPU ドライバのインストール] セクションで、次のいずれかの方法を選択します。

        • Google が管理: GKE はドライバを自動的にインストールします。このオプションを選択した場合は、[バージョン] プルダウン リストで、次のいずれかのドライバ バージョンを選択します。

          • Default: 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. [Spot VM 上にノードを作成する] または [configure Flex-start VMs with queued provisioning] を選択します。

    7. ノードプールを作成する準備ができたら、[作成] をクリックします。

    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 のトラブルシューティングをご覧ください。

次のステップ