クラスタのオートスケーラー イベントの表示

Google Kubernetes Engine(GKE)のクラスタ オートスケーラーは、Cloud Logging のログエントリとして使用可能な可視化イベントを発行します。このページでは、こうしたログに記録されたイベントを表示して、GKE クラスタ オートスケーラーが自動スケーリングを行うタイミングと理由について分析する方法について説明します。

可用性の要件

ログに記録されたクラスタ オートスケーラー イベントを表示する機能は、次のクラスタのバージョンで使用できます。

イベントの種類 クラスタのバージョン
statusscaleUpscaleDowneventResult 1.15.4-gke.7 以降
nodePoolCreatednodePoolDeleted 1.15.4-gke.18 以降
noScaleUp 1.16.6-gke.3 以降
noScaleDown 1.16.8-gke.2 以降

イベントの表示

クラスタ オートスケーラーの可視性イベントは、GKE クラスタと同じプロジェクト内の Cloud Logging ログに保存されます。

ログを表示するには、次の手順を実施します。

  1. Cloud Console で、[ログビューア] ページに移動します。

    ログビューアに移動

  2. 基本または高度なクエリ インターフェースを使用してログを検索します。

    基本クエリ インターフェースを使用してログを検索する方法は次のとおりです。

    1. リソースのプルダウン リストから [Kubernetes クラスタ] を選択し、クラスタの場所と名前を選択します。
    2. [logs type] プルダウン リストから、[container.googleapis.com/cluster-autoscaler-visibility] を選択します。
    3. [time-range] プルダウン リストから目的の期間を選択します。

    高度なクエリ インターフェースを使用してログを検索するには、次の高度なフィルタを適用します。

    resource.type="k8s_cluster"
    resource.labels.location="cluster-location"
    resource.labels.cluster_name="cluster-name"
    logName="projects/project-id/logs/container.googleapis.com%2Fcluster-autoscaler-visibility"
    

    ここで

    • cluster-location は、検査しているクラスタの場所です。
    • cluster-name はクラスタの名前です。
    • project-id はプロジェクト ID です。

イベントの種類

ログに記録されるイベントはすべて JSON 形式で、ログエントリの jsonPayload フィールドで確認できます。イベントのタイムスタンプはすべて UNIX の秒単位のタイムスタンプです。

クラスタ オートスケーラーによって出力されるイベントの種類の概要は次のとおりです。

イベントの種類 説明
status 定期的に発生します。すべての自動スケーリング ノードプールのサイズと、クラスタ オートスケーラーによって観測されるすべての自動スケーリング ノードプールのターゲット サイズを示します。
scaleUp クラスタ オートスケーラーがクラスタをスケールアップすると発生します。
scaleDown クラスタ オートスケーラーがクラスタをスケールダウンすると発生します。
eventResult scaleUp イベントまたは scaleDown イベントが正常に完了したか失敗したときに発生します。
nodePoolCreated ノードの自動プロビジョニングが有効になっているクラスタ オートスケーラーが、新しいノードプールを作成すると発生します。
nodePoolDeleted ノードの自動プロビジョニングが有効になっているクラスタ オートスケーラーが、ノードプールを削除すると発生します。
noScaleUp クラスタ内にスケジュール不可の Pod があり、クラスタ オートスケーラーが Pod に対応するようにクラスタをスケールアップできない場合に発生します。
noScaleDown クラスタ オートスケーラーによる削除がブロックされているノードがある場合に発生します。

Status イベント

status イベントは定期的に生成され、すべての自動スケーリング ノードプールの実際のサイズと、クラスタ オートスケーラーによって観測されるすべての自動スケーリング ノードプールのターゲット サイズを示します。

次のログサンプルは status イベントを示しています。

{
  "status": {
    "autoscaledNodesCount": 4,
    "autoscaledNodesTarget": 4,
    "measureTime": "1582898536"
  }
}

scaleUp イベント

scaleUp イベントは、クラスタ オートスケーラーがクラスタをスケールアップするときに生成されます。このイベントには、スケールアップされたマネージド インスタンス グループ(MIG)、ノードの数、イベントをトリガーしたスケジュール不可の Pod に関する情報が含まれます。

トリガーとなる Pod のリストは、任意の 50 個のエントリで切り捨てられます。トリガーとなる Pod の実際の数は、triggeringPodsTotalCount フィールドで確認できます。

次のログサンプルは scaleUp イベントを示しています。

{
  "decision": {
    "decideTime": "1582124907",
    "eventId": "ed5cb16d-b06f-457c-a46d-f75dcca1f1ee",
    "scaleUp": {
      "increasedMigs": [
        {
          "mig": {
            "name": "test-cluster-default-pool-a0c72690-grp",
            "nodepool": "default-pool",
            "zone": "us-central1-c"
          },
          "requestedNodes": 1
        }
      ],
      "triggeringPods": [
        {
          "controller": {
            "apiVersion": "apps/v1",
            "kind": "ReplicaSet",
            "name": "test-85958b848b"
          },
          "name": "test-85958b848b-ptc7n",
          "namespace": "default"
        }
      ],
      "triggeringPodsTotalCount": 1
    }
  }
}

scaleDown イベント

scaleDown イベントは、クラスタ オートスケーラーがクラスタをスケールダウンするときに生成されます。このイベントには、削除されるノードと、ノードが削除されたことで削除が必要になる Pod に関する情報が含まれます。

cpuRatio フィールドと memRatio フィールドは、ノードの CPU とメモリの使用率をパーセントで示します。この使用率は、Pod リクエストの合計を割り当て可能なノードで割ったもので、実際の使用率ではありません。

削除される Pod のリストは、任意の 50 個のエントリで切り捨てられます。削除される Pod の実際の数は、evictedPodsTotalCount フィールドで確認できます。

次のログサンプルは scaleDown イベントを示しています。

{
  "decision": {
    "decideTime": "1580594665",
    "eventId": "340dac18-8152-46ff-b79a-747f70854c81",
    "scaleDown": {
      "nodesToBeRemoved": [
        {
          "evictedPods": [
            {
              "controller": {
                "apiVersion": "apps/v1",
                "kind": "ReplicaSet",
                "name": "kube-dns-5c44c7b6b6"
              },
              "name": "kube-dns-5c44c7b6b6-xvpbk"
            }
          ],
          "evictedPodsTotalCount": 1,
          "node": {
            "cpuRatio": 23,
            "memRatio": 5,
            "mig": {
              "name": "test-cluster-default-pool-c47ef39f-grp",
              "nodepool": "default-pool",
              "zone": "us-central1-f"
            },
            "name": "test-cluster-default-pool-c47ef39f-p395"
          }
        }
      ]
    }
  }
}

eventResult イベント

eventResult イベントは、scaleUp イベントまたは scaleDown イベントが正常に完了したときまたは失敗したときに生成されます。このイベントには、イベント ID(scaleUp イベントまたは scaleDown イベントの eventId フィールド)のリストとエラー メッセージが含まれます。空のエラー メッセージは、イベントが正常に完了したことを示します。eventResult イベントのリストは results フィールドに集約されます。

エラーを診断するには、ScaleUp エラーのセクションと ScaleDown エラーのセクションをご覧ください。

次のログサンプルは eventResult イベントを示しています。

{
  "resultInfo": {
    "measureTime": "1582878896",
    "results": [
      {
        "eventId": "2fca91cd-7345-47fc-9770-838e05e28b17"
      },
      {
        "errorMsg": {
          "messageId": "scale.down.error.failed.to.delete.node.min.size.reached",
          "parameters": [
            "test-cluster-default-pool-5c90f485-nk80"
          ]
        },
        "eventId": "ea2e964c-49b8-4cd7-8fa9-fefb0827f9a6"
      }
    ]
  }
}

NodePoolCreated イベント

ノードの自動プロビジョニングが有効になっているクラスタ オートスケーラーが新しいノードプールを作成すると、nodePoolCreated イベントが生成されます。このイベントには、作成されたノードプールの名前とその MIG のリストが含まれます。scaleUp イベントによってノードプールが作成された場合は、対応する scaleUp イベントの eventIdtriggeringScaleUpId フィールドに含まれます。

次のログサンプルは nodePoolCreated イベントを示しています。

{
  "decision": {
    "decideTime": "1585838544",
    "eventId": "822d272c-f4f3-44cf-9326-9cad79c58718",
    "nodePoolCreated": {
      "nodePools": [
        {
          "migs": [
            {
              "name": "test-cluster-nap-n1-standard--b4fcc348-grp",
              "nodepool": "nap-n1-standard-1-1kwag2qv",
              "zone": "us-central1-f"
            },
            {
              "name": "test-cluster-nap-n1-standard--jfla8215-grp",
              "nodepool": "nap-n1-standard-1-1kwag2qv",
              "zone": "us-central1-c"
            }
          ],
          "name": "nap-n1-standard-1-1kwag2qv"
        }
      ],
      "triggeringScaleUpId": "d25e0e6e-25e3-4755-98eb-49b38e54a728"
    }
  }
}

NodePoolDeleted イベント

ノードの自動プロビジョニングが有効になっているクラスタ オートスケーラーがノードプールを削除すると、nodePoolDeleted イベントが生成されます。

次のログサンプルは nodePoolDeleted イベントを示しています。

{
  "decision": {
    "decideTime": "1585830461",
    "eventId": "68b0d1c7-b684-4542-bc19-f030922fb820",
    "nodePoolDeleted": {
      "nodePoolNames": [
        "nap-n1-highcpu-8-ydj4ewil"
      ]
    }
  }
}

NoScaleUp イベント

noScaleUp イベントは、クラスタ内にスケジュール不可の Pod があり、クラスタ オートスケーラーが Pod に対応するようにクラスタをスケールアップできない場合に定期的に生成されます。

  • noScaleUp イベントはベスト エフォート型です。つまり、このイベントは、クラスタ オートスケーラーがスケールアップできない理由すべてに対応しているわけではありません。
  • 生成されるログ容量を制限するため、noScaleUp イベントは抑制されます。永続的な理由のみ、数分ごとに出力されます。
  • すべての理由を複数のイベントに任意に分割できます。たとえば、1 つの Pod グループで拒否された MIG の理由がすべて、同じイベントに表示されるという保証はありません。
  • 未処理の Pod グループのリストは、任意の 50 個のエントリで切り捨てられます。未処理の Pod グループの実際の数は、unhandledPodGroupsTotalCount フィールドで確認できます。

Reason フィールド

次のフィールドは、スケールアップが発生しなかった理由を説明するために役立ちます。

  • reason: クラスタ オートスケーラーがスケールアップされない代表的な理由を示します。詳細については、NoScaleUp の最上位の理由をご覧ください。
  • napFailureReason: クラスタ オートスケーラーが追加のノードプールをプロビジョニングできない代表的な理由(ノードの自動プロビジョニングが無効になっているなど)を示します。詳細については、NoScaleUp のノードの自動プロビジョニングの最上位の理由をご覧ください。
  • skippedMigs[].reason: 特定の MIG がスキップされた理由に関する情報を示します。クラスタ オートスケーラーは、スケールアップの試行中に対象の Pod から一部の MIG をスキップします(別のノードを追加するとクラスタ全体のリソース上限を超えることになるなど)。詳細については、NoScaleUp の MIG レベルの理由をご覧ください。
  • unhandledPodGroups: スケジュール不可の Pod の特定のグループがスケールアップをトリガーしない理由に関する情報が含まれます。Pod は即時コントローラによってグループ化されます。コントローラのない Pod は単独でグループ化されます。各 Pod グループには、任意の Pod の例とグループ内の Pod の数、さらに次の理由が含まれます。
    • napFailureReasons: クラスタ オートスケーラーがこの Pod グループに合わせて新しいノードプールをプロビジョニングできない理由(Pod にアフィニティの制約があるなど)。詳細については、NoScaleUp のノードの自動プロビジョニングの Pod レベルの理由をご覧ください。
    • rejectedMigs[].reason: クラスタ オートスケーラーがこの Pod グループに合わせて特定の MIG のサイズを増やすことができない MIG ごとの理由(MIG のノードが Pod に対して小さすぎるなど)。詳細については、NoScaleUp の MIG レベルの理由をご覧ください。

次のログサンプルは noScaleUp イベントを示しています。

{
  "noDecisionStatus": {
    "measureTime": "1582523362",
    "noScaleUp": {
      "skippedMigs": [
        {
          "mig": {
            "name": "test-cluster-nap-n1-highmem-4-fbdca585-grp",
            "nodepool": "nap-n1-highmem-4-1cywzhvf",
            "zone": "us-central1-f"
          },
          "reason": {
            "messageId": "no.scale.up.mig.skipped",
            "parameters": [
              "max cluster cpu limit reached"
            ]
          }
        }
      ],
      "unhandledPodGroups": [
        {
          "napFailureReasons": [
            {
              "messageId": "no.scale.up.nap.pod.zonal.resources.exceeded",
              "parameters": [
                "us-central1-f"
              ]
            }
          ],
          "podGroup": {
            "samplePod": {
              "controller": {
                "apiVersion": "v1",
                "kind": "ReplicationController",
                "name": "memory-reservation2"
              },
              "name": "memory-reservation2-6zg8m",
              "namespace": "autoscaling-1661"
            },
            "totalPodCount": 1
          },
          "rejectedMigs": [
            {
              "mig": {
                "name": "test-cluster-default-pool-b1808ff9-grp",
                "nodepool": "default-pool",
                "zone": "us-central1-f"
              },
              "reason": {
                "messageId": "no.scale.up.mig.failing.predicate",
                "parameters": [
                  "NodeResourcesFit",
                  "Insufficient memory"
                ]
              }
            }
          ]
        }
      ],
      "unhandledPodGroupsTotalCount": 1
    }
  }
}

NoScaleDown イベント

noScaleDown イベントは、クラスタ オートスケーラーによる削除がブロックされているノードがある場合に生成されます。

  • 使用率が高いために削除できないノードは、noscaleDown イベントに含まれません。
  • noScaleDown イベントはベスト エフォート型です。つまり、このイベントは、クラスタ オートスケーラーがスケールダウンできない理由すべてに対応しているわけではありません。
  • 生成されるログ容量を制限するため、noScaleDown イベントは抑制されます。永続的な理由のみ、数分ごとに出力されます。
  • ノードのリストは任意の 50 個のエントリで切り捨てられます。実際のノード数は nodesTotalCount フィールドで確認できます。

Reason フィールド

次のフィールドは、スケールダウンが発生しなかった理由を説明するために役立ちます。

  • reason: クラスタ オートスケーラーがスケールダウンされない代表的な理由を示します(最近スケールアップした後のバックオフ期間など)。詳細については、NoScaleDown の最上位の理由をご覧ください。
  • nodes[].reason: クラスタ オートスケーラーが特定のノードを削除できない理由をノードごとに示します(ノードの Pod を移動する場所がないなど)。詳細については、NoScaleDown のノードレベルの理由をご覧ください。

次のログサンプルは noScaleDown イベントを示しています。

{
  "noDecisionStatus": {
    "measureTime": "1582858723",
    "noScaleDown": {
      "nodes": [
        {
          "node": {
            "cpuRatio": 42,
            "mig": {
              "name": "test-cluster-default-pool-f74c1617-grp",
              "nodepool": "default-pool",
              "zone": "us-central1-c"
            },
            "name": "test-cluster-default-pool-f74c1617-fbhk"
          },
          "reason": {
            "messageId": "no.scale.down.node.no.place.to.move.pods"
          }
        }
      ],
      "nodesTotalCount": 1,
      "reason": {
        "messageId": "no.scale.down.in.backoff"
      }
    }
  }
}

デバッグのシナリオ

ここでは、スケーリング イベントをデバッグする方法について説明します。

クラスタがスケールアップしない

シナリオ クラスタに Pod を作成しましたが、過去 1 時間は保留状態のままです。クラスタ オートスケーラーは、Pod に対応する新しいノードをプロビジョニングしませんでした。

解決策:

  1. ログビューアで、イベントの表示セクションの説明に従って、クラスタ オートスケーラー イベントのロギングの詳細を確認します。
  2. triggeringPods フィールドで目的の Pod を含む scaleUp イベントを検索します。特定の JSON フィールド値によるフィルタリングなど、ログエントリをフィルタリングできます。詳細については、高度なログクエリをご覧ください。

    1. scaleUp イベントと同じ eventId を含む EventResult を見つけます。
    2. errorMsg フィールドで、有効な scaleUp エラー メッセージ一覧を調べます。

    ScaleUp エラーの例: scaleUp イベントの場合、エラーは "scale.up.error.quota.exceeded" であることがわかります。これは、「割り当ての超過により、MIG の一部を増やすことができなかったため、scaleUP イベントが失敗した」ことを示しています。この問題を解決するには、割り当て設定を確認し、超過しそうな設定を増やします。クラスタ オートスケーラーが新しいノードを追加し、Pod がスケジュールされます。

  3. noScaleUp イベントを検索し、次のフィールドを確認します。

    • unhandledPodGroups: Pod(または Pod のコントローラ)に関する情報が含まれます。
    • reason: スケールアップがブロックされる可能性があることを示す代表的な理由を示します。
    • skippedMigs: 一部の MIG がスキップされる可能性がある理由を示します。
  4. noScaleUp イベントが発生する理由として考えられるものについては、次のセクションをご覧ください。

    NoScaleUp の例: Pod に関して noScaleUp イベントがあり、rejectedMigs フィールド内のすべての MIG に 2 つのパラメータ "NodeAffinity""node(s) did not match node selector" を指定した同じメッセージ ID "no.scale.up.mig.failing.predicate" があります。エラー メッセージ一覧を調べたところ、「MIG の述語が失敗したために MIG をスケールアップできない」ことがわかりました。パラメータは、失敗した述語の名前と失敗した理由です。この問題を解決するには、Pod の仕様を調べ、クラスタ内の MIG と一致しないノードセレクタが Pod の仕様に含まれていることを確認します。Pod の仕様からこのセレクタを削除し、Pod を再作成します。クラスタ オートスケーラーが新しいノードを追加し、Pod がスケジュールされます。

  5. noScaleUp イベントがない場合は、他のデバッグ方法を使用して問題を解決します。

クラスタがスケールダウンしない

シナリオ: クラスタ内に、過去数日で CPU とメモリの 10% しか使用していないノードがあります。使用率が低いにもかかわらず、クラスタ オートスケーラーが想定どおりにノードを削除しませんでした。

解決策:

  1. ログビューアで、イベントの表示セクションの説明に従って、クラスタ オートスケーラー イベントのロギングの詳細を確認します。
  2. nodesToBeRemoved フィールドで目的のノードを含む scaleDown イベントを検索します。特定の JSON フィールド値によるフィルタリングなど、ログエントリをフィルタリングできます。詳細については、高度なログクエリをご覧ください。
    1. scaleDown イベントで、関連する eventId を含む EventResult イベントを検索します。
    2. errorMsg フィールドで、有効な scaleDown エラー メッセージ一覧を調べます。
  3. nodes フィールドで目的のノードを含む noScaleDown イベントを検索します。スケールダウンがブロックされる可能性があることを示す代表的な理由については、reason フィールドをご覧ください。
  4. noScaleDown イベントが発生する理由として考えられるものについては、次のセクションをご覧ください。

    NoScaleDown の例: ノードに関し、ノードごとの理由を含む noScaleDown イベントが見つかりました。メッセージ ID は "no.scale.down.node.pod.has.local.storage" で、1 つのパラメータ "test-single-pod" が指定されています。エラー メッセージ一覧を調べたところ、「Pod がローカル ストレージをリクエストしているため、スケールダウンがブロックされている」ことがわかりました。Kubernetes クラスタ オートスケーラーに関するよくある質問から、Pod に "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" アノテーションを追加する解決策が見つかります。アノテーションの適用後、クラスタ オートスケーラーはクラスタを正しくスケールダウンします。

  5. noScaleDown イベントがない場合は、他のデバッグ方法を使用して問題を解決します。

メッセージ

クラスタ オートスケーラーが生成したイベントは、パラメータ化されたメッセージ(messageId フィールドに表示)でイベントについて説明します。

ここでは、さまざまな messageId と、対応するパラメータについて説明します。考えられるすべてのメッセージがここに記載されているわけではなく、いつでも拡張できます。

ScaleUp エラー

scaleUp イベントに関するエラー メッセージは、resultInfo.results[].errorMsg フィールド内の対応する eventResult イベントにあります。

メッセージ 説明

"scale.up.error.out.of.resources"
リソース不足で MIG の一部を増やすことができなかったため、scaleUp イベントが失敗しました。

パラメータ: 失敗した MIG ID。


"scale.up.error.quota.exceeded"
Compute Engine の割り当て超過で MIG の一部を増やすことができなかったため、scaleUp イベントが失敗しました。

パラメータ: 失敗した MIG ID。


"scale.up.error.waiting.for.instances.timeout"
一部の MIG のインスタンスが時間内に表示されなかったため、scaleUp イベントが失敗しました。

パラメータ: 失敗した MIG ID。

ScaleDown エラー

scaleDown イベントに関するエラー メッセージは、resultInfo.results[].errorMsg フィールド内の対応する eventResult イベントにあります。

メッセージ 説明

"scale.down.error.failed.to.mark.to.be.deleted"
ノードを削除対象としてマークできなかったため、scaleDown イベントが失敗しました。

パラメータ: 失敗したノード名。


"scale.down.error.failed.to.evict.pods"
一部の Pod をノードから削除できなかったため、scaleDown イベントが失敗しました。

パラメータ: 失敗したノード名。


"scale.down.error.failed.to.delete.node.min.size.reached"
クラスタがすでに最小サイズになっていてノードを削除できなかったため、scaleDown イベントが失敗しました。

パラメータ: 失敗したノード名。

NoScaleUp イベントが発生する理由

NoScaleUp の最上位の理由

noScaleUp イベントの最上位の理由メッセージが noDecisionStatus.noScaleUp.reason フィールドに表示されます。このメッセージには、クラスタ オートスケーラーがクラスタをスケールアップできない最上位の理由が含まれています。

メッセージ 説明

"no.scale.up.in.backoff"
スケールアップがバックオフ期間中(一時的にブロック中)であるため、noScaleUp が発生しました。

NoScaleUp のノードの自動プロビジョニングの最上位の理由

noScaleUp イベントに関するノードの自動プロビジョニングの最上位の理由メッセージが noDecisionStatus.noScaleUp.napFailureReason フィールドに表示されます。このメッセージには、クラスタ オートスケーラーが新しいノードプールをプロビジョニングできない最上位の理由が含まれています。

メッセージ 説明

"no.scale.up.nap.disabled"
ノード自動プロビジョニング機能が無効になっているため、ノードの自動プロビジョニングでノードグループがプロビジョニングされませんでした。詳細については、ノード自動プロビジョニング機能を有効にするをご覧ください。

"no.scale.up.nap.no.locations.available"
使用できるノード自動プロビジョニングのロケーションがなかったため、ノードの自動プロビジョニングでノードグループがプロビジョニングされませんでした。

NoScaleUp の MIG レベルの理由

noScaleUp イベントに関する MIG レベルの理由メッセージが noDecisionStatus.noScaleUp.skippedMigs[].reason フィールドと noDecisionStatus.noScaleUp.unhandledPodGroups[].rejectedMigs[].reason フィールドに表示されます。このメッセージには、クラスタ オートスケーラーが特定の MIG のサイズを増やすことができない理由が含まれています。

メッセージ 説明

"no.scale.up.mig.skipped"
シミュレーション中に MIG がスキップされたため、MIG をスケールアップできません。

パラメータ: 人が読める形式の、MIG がスキップされた理由。


"no.scale.up.mig.failing.predicate"
MIG の述語が失敗したため、MIG をスケールアップできません。

パラメータ: 失敗した述語の名前。人が読める形式の、失敗した理由。

NoScaleUp のノードにおける自動プロビジョニングの Pod グループレベルの理由

noScaleUp イベントに関するノードの自動プロビジョニングの Pod グループレベルの理由に関するメッセージが noDecisionStatus.noScaleUp.unhandledPodGroups[].napFailureReasons[] フィールドに表示されます。このメッセージには、クラスタ オートスケーラーが特定の Pod グループに対応する新しいノードプールをプロビジョニングできない理由が含まれています。

メッセージ 説明

"no.scale.up.nap.pod.gpu.no.limit.defined"
Pod に GPU リクエストがあり、GPU に定義された上限がないため、ノードの自動プロビジョニングで Pod のノードグループがプロビジョニングされませんでした。

パラメータ: リクエストされた GPU タイプ。


"no.scale.up.nap.pod.gpu.type.not.supported"
ノードの自動プロビジョニングでサポートされていない GPU が指定されているため、Pod のノードグループがプロビジョニングされませんでした。詳細については、GPU の上限の設定をご覧ください。

パラメータ: リクエストされた GPU タイプ。


"no.scale.up.nap.pod.gpu.other.error"
GPU の構成に関する他の問題のため、ノードの自動プロビジョニングで Pod のノードグループがプロビジョニングされませんでした。詳細については、GPU の上限の設定をご覧ください。

"no.scale.up.nap.pod.zonal.resources.exceeded"
ノードの自動プロビジョニングでこのゾーン内の Pod のノードグループがプロビジョニングされませんでした。プロビジョニングを実施すると、リソースの上限に違反することになるためです。

パラメータ: 対象ゾーンの名前。


"no.scale.up.nap.pod.zonal.failing.predicates"
述語が失敗したため、ノードの自動プロビジョニングで、このゾーン内の Pod のノードグループがプロビジョニングされませんでした。

パラメータ: 対象ゾーンの名前。人が読める形式の、述語が失敗した理由。

NoScaleDown イベントが発生する理由

NoScaleDown の最上位の理由

noScaleDown イベントの最上位の理由メッセージが noDecisionStatus.noScaleDown.reason フィールドに表示されます。このメッセージには、クラスタ オートスケーラーがクラスタをスケールダウンできない最上位の理由が含まれています。

メッセージ 説明

"no.scale.down.in.backoff"
スケールダウンがバックオフ期間中(一時的にブロック中)であるため、noScaleDown が発生しました。

"no.scale.down.in.progress"
前の scaleDown イベントが進行中のため、noScaleDown イベントが発生しました。

NoScaleDown のノードレベルの理由

noScaleDown イベントのノードレベルの理由メッセージが noDecisionStatus.noScaleDown.nodes[].reason フィールドに表示されます。このメッセージには、クラスタ オートスケーラーが特定のノードを削除できない理由が含まれています。

メッセージ 説明

"no.scale.down.node.scale.down.disabled.annotation"
ノードに「スケールダウンが無効」のアノテーションがあるため、削除できません。詳細については、Kubernetes クラスタ オートスケーラーのよくある質問をご覧ください。

"no.scale.down.node.node.group.min.size.reached"
ノードグループがすでに最小サイズになっているため、ノードを削除できません。

"no.scale.down.node.minimal.resource.limits.exceeded"
ノードがクラスタ全体の最小リソース上限に違反することになるため、削除できません。

"no.scale.down.node.no.place.to.move.pods"
ノードの Pod を移動する場所がないため、ノードを削除できません。

"no.scale.down.node.pod.not.backed.by.controller"
Pod がコントローラによってサポートされていないため、スケールダウンがブロックされています。詳細については、Kubernetes クラスタ オートスケーラーのよくある質問をご覧ください。

パラメータ: ブロックしている Pod の名前。


"no.scale.down.node.pod.has.local.storage"
Pod がローカル ストレージをリクエストしているため、スケールダウンがブロックされています。詳細については、Kubernetes クラスタ オートスケーラーのよくある質問をご覧ください。

パラメータ: ブロックしている Pod の名前。


"no.scale.down.node.pod.not.safe.to.evict.annotation"
Pod に「安全でない削除」アノテーションがあるため、スケールダウンがブロックされています。詳細については、Kubernetes クラスタ オートスケーラーのよくある質問をご覧ください。

パラメータ: ブロックしている Pod の名前。


"no.scale.down.node.pod.kube.system.unmovable"
Pod が非 daemonset、非ミラーリング、pdb で割り当てられていない kube-system であるため、スケールダウンがブロックされています。詳細については、Kubernetes クラスタ オートスケーラーのよくある質問をご覧ください。

パラメータ: ブロックしている Pod の名前。


"no.scale.down.node.pod.not.enough.pdb"
Pod に十分な PodDisruptionBudget が残っていないため、スケールダウンがブロックされています。詳細については、Kubernetes クラスタ オートスケーラーのよくある質問をご覧ください。

パラメータ: ブロックしている Pod の名前。

次のステップ