GKE ノードの自動プロビジョニングが制限が定義されているためスケールアップしない

GKE ノードの自動プロビジョニングが制限が定義されているためスケールアップしない

GKE ノードの自動プロビジョニングを使用して、オンデマンドで GPU を備えたノードプールを作成したいと考えています (つまり、GPU リソースを必要とするジョブを開始するとき)。

GCP チュートリアルに従って、 を有効にしてクラスターをセットアップしましたcluster autoscaling。NAPnode auto-provisioningは CPU、メモリ、GPU の制限を設定しています。

resourceLimits:
  - maximum: '15'
    minimum: '1'
    resourceType: cpu
  - maximum: '150'
    minimum: '1'
    resourceType: memory
  - maximum: '2'
    resourceType: nvidia-tesla-k80

NAP が機能していることは、すでにいくつかのノードが起動していることからわかっていますが、それらはすべて「通常のノード」(GPU なし) でした。

ここで、NAP に GPU マシンでノード プールを作成するように「強制」します。それまでは、クラスターに GPU ノードは存在しません。そのためには、次のような構成ファイルを使用してジョブを作成します。

apiVersion: batch/v1
kind: Job
metadata:
  name: training-job
spec:
  ttlSecondsAfterFinished: 100
  template:
    metadata:
      name: training-job
    spec:
      nodeSelector:
        gpu: "true"
        cloud.google.com/gke-spot: "true"
        cloud.google.com/gke-accelerator: nvidia-tesla-k80
      tolerations:
        - key: cloud.google.com/gke-spot
          operator: Equal
          value: "true"
          effect: NoSchedule
      containers:
        - name: gpu-test
          image: przomys/gpu-test
          resources:
            requests:
              cpu: 500m
            limits:
              nvidia.com/gpu: 2 # requesting 2 GPU
      restartPolicy: Never # Do not restart containers after they exit

ジョブは作成中ですが、「スケジュール不可」としてマークされ、CA ログに次のようなエラーが表示されます。

{
  "noDecisionStatus": {
    "measureTime": "1650370630",
    "noScaleUp": {
      "unhandledPodGroups": [
        {
          "rejectedMigs": [
            {
              "reason": {
                "messageId": "no.scale.up.mig.failing.predicate",
                "parameters": [
                  "NodeAffinity",
                  "node(s) didn't match Pod's node affinity/selector"
                ]
              },
              "mig": {
                "zone": "us-central1-c",
                "nodepool": "pool-3",
                "name": "gke-cluster-activeid-pool-3-af526144-grp"
              }
            },
            {
              "mig": {
                "name": "gke-cluster-activeid-nap-e2-standard--c7a4d4f1-grp",
                "zone": "us-central1-c",
                "nodepool": "nap-e2-standard-2-w52e84k8"
              },
              "reason": {
                "parameters": [
                  "NodeAffinity",
                  "node(s) didn't match Pod's node affinity/selector"
                ],
                "messageId": "no.scale.up.mig.failing.predicate"
              }
            }
          ],
          "napFailureReasons": [
            {
              "parameters": [
                "Any GPU."
              ],
              "messageId": "no.scale.up.nap.pod.gpu.no.limit.defined"
            }
          ],
          "podGroup": {
            "totalPodCount": 1,
            "samplePod": {
              "controller": {
                "apiVersion": "batch/v1",
                "kind": "Job",
                "name": "training-job"
              },
              "namespace": "default",
              "name": "training-job-7k8zd"
            }
          }
        }
      ],
      "unhandledPodGroupsTotalCount": 1
    }
  }
}

私の推測ではスケールアップナップポッドのGPU制限は定義されていません最も重要な部分です。GCP チュートリアル私を指差すここしかし、この制限は定義されているので、アイデアが尽きています...

たぶん誰かが私が何を間違っているのか知っているでしょうか?

関連情報