ClusterStagedUpdateRun エラー メッセージと StagedUpdateRun エラー メッセージのトラブルシューティング

概要

この記事では、更新プログラムを実行する API を持つリソースを Microsoft Azure Kubernetes Fleet Manager に伝達するときに発生する ClusterStagedUpdateRun エラーと StagedUpdateRun エラーのトラブルシューティング方法について説明します。

エラー メッセージの例を次に示します。

    Last Transition Time:  2026-02-11T22:15:20Z
    Message:               The UpdateRun initialized successfully
    Observed Generation:   2
    Reason:                UpdateRunInitializedSuccessfully
    Status:                True
    Type:                  Initialized
    Last Transition Time:  2026-02-11T22:15:59Z
    Message:               The stages are aborted due to a non-recoverable error
    Observed Generation:   2
    Reason:                UpdateRunFailed
    Status:                False
    Type:                  Progressing
    Last Transition Time:  2026-02-11T22:16:59Z
    Message:               cannot continue the updateRun: failed to validate the updateRun: failed to process the request due to a client error: parent placement not found
    Observed Generation:   2
    Reason:                UpdateRunFailed
    Status:                False
    Type:                  Succeeded

エラーを調査する

  1. 次のコマンドを実行して、 ClusterStagedUpdateRun エラー メッセージを見つけます。
$ kubectl get clusterstagedupdaterun example-run 

NAME          PLACEMENT           RESOURCE-SNAPSHOT-INDEX   POLICY-SNAPSHOT-INDEX   INITIALIZED   PROGRESSING   SUCCEEDED   AGE
example-run   example-placement   0                         0                       True          False         False       24m

PROGRESSINGSUCCEEDEDフィールドの値がFalseされます。 この値は、実行が失敗したことを示します。

  1. エラーの詳細を取得するには、次のコマンドを実行します。
$ kubectl describe clusterstagedupdaterun example-run
Name:         example-run
...
API Version:  placement.kubernetes-fleet.io/v1beta1
Kind:         ClusterStagedUpdateRun
Metadata:
  Creation Timestamp:  2026-02-11T22:15:19Z
  Finalizers:
    kubernetes-fleet.io/clusterstagedupdaterun-finalizer
  Generation:        2
  ...
Spec:
  Placement Name:                example-placement
  Resource Snapshot Index:       0
  Staged Rollout Strategy Name:  example-strategy
  State:                         Run
Status:
  Applied Strategy:
    Comparison Option:  PartialComparison
    Type:               ClientSideApply
    When To Apply:      Always
    When To Take Over:  Always
  Conditions:
    Last Transition Time:  2026-02-11T22:15:20Z
    Message:               The UpdateRun initialized successfully
    Observed Generation:   2
    Reason:                UpdateRunInitializedSuccessfully
    Status:                True
    Type:                  Initialized
    Last Transition Time:  2026-02-11T22:15:59Z
    Message:               The stages are aborted due to a non-recoverable error
    Observed Generation:   2
    Reason:                UpdateRunFailed
    Status:                False
    Type:                  Progressing
    Last Transition Time:  2026-02-11T22:16:59Z
    Message:               cannot continue the updateRun: failed to validate the updateRun: failed to process the request due to a client error: parent placement not found
    Observed Generation:   2
    Reason:                UpdateRunFailed
    Status:                False
    Type:                  Succeeded
  Deletion Stage Status:
    Clusters:
    Stage Name:                   kubernetes-fleet.io/deleteStage
  Policy Observed Cluster Count:  3
  Policy Snapshot Index Used:     0
  Resource Snapshot Index Used:   0
  Staged Update Strategy Snapshot:
    Stages:
      After Stage Tasks:
        Type:  Approval
      Before Stage Tasks:
        Type:  Approval
      Label Selector:
        Match Labels:
          Environment:  staging
      Max Concurrency:  1
      Name:             staging
  Stages Status:
    After Stage Task Status:
      Approval Request Name:  example-run-after-staging
      Type:                   Approval
    Before Stage Task Status:
      Approval Request Name:  example-run-before-staging
      Conditions:
        Last Transition Time:  2026-02-11T22:15:59Z
        Message:               ApprovalRequest object is created
        Observed Generation:   2
        Reason:                StageTaskApprovalRequestCreated
        Status:                True
        Type:                  ApprovalRequestCreated
      Type:                    Approval
    Clusters:
      Cluster Name:  cluster-1
      Cluster Name:  cluster-2
      Cluster Name:  cluster-3
    Conditions:
      Last Transition Time:  2026-02-11T22:15:59Z
      Message:               Not all before-stage tasks are completed, waiting for approval
      Observed Generation:   2
      Reason:                StageUpdatingWaiting
      Status:                False
      Type:                  Progressing
    Stage Name:              staging

Progressing条件がFalseの場合、理由の値はUpdateRunFailedされ、メッセージは "回復不可能なエラーによりステージが中止されました" というメッセージが表示されます。これらの値は、実行が失敗したことを示します。

一般的な実行エラー

調整中の検証エラー

原因

調整のたびに、実行前に検証が行われます。 これらの検証エラーは、初期化中に発生する一般的な検証エラーに似ています。

解決策

"Aborted" updateRun メッセージは、実行失敗によって生成されます。 ランは復旧できません。 検証エラーが原因でエラーが発生した場合は、問題を修正し、新しい updateRun インスタンスを作成します。

配置が見つかりません

原因

ClusterStagedUpdateRunは、渡された初期化を実行します。 したがって、参照する ClusterResourcePlacement のインスタンスは、以前に存在している必要があります。 ClusterResourcePlacementの実行中にユーザーがClusterStagedUpdateRunを削除しました。

メッセージの例:

cannot continue the updateRun: failed to validate the updateRun: failed to process the request due to a client error: parent placement not found

解決策

同じ名前空間に新しい ClusterResourcePlacement インスタンスを作成します。 次に、その配置を参照する新しい ClusterStagedUpdateRun インスタンスを作成します。

戦略が見つかりません

原因

ClusterStagedUpdateRun 初期化を通過しました。 そのため、参照する ClusterStagedUpdateStrategy インスタンスが以前に存在している必要があります。 ClusterStagedUpdateStrategyの実行中にユーザーがClusterStagedUpdateRunを削除しました。

メッセージの例:

cannot continue the updateRun: failed to validate the updateRun: referenced updateStrategy not found: ...

解決策

同じ名前空間に新しい ClusterStagedUpdateStrategy インスタンスを作成します。 次に、その戦略を参照する新しい ClusterStagedUpdateRun インスタンスを作成します。

無効なステージ タスク

原因

ClusterStagedUpdateRun の初期化が完了しました。 したがって、それを参照する ClusterStagedUpdateStrategy インスタンスは、以前にステージ タスクを正しく定義しました。 ユーザーが ClusterStagedUpdateStrategyを更新しました。

メッセージの例:

cannot continue the updateRun: failed to validate the updateRun: the before stage tasks are invalid, updateStrategy: ...

解決策

を正しく更新するためのガイダンスについては、ClusterStagedUpdateStrategy を参照してください。 次に、新しい ClusterStagedUpdateRun インスタンスを作成します。

クラスターが複数回表示される

原因

ClusterStagedUpdateRun は初期化に渡され、クラスター ラベルは最初は有効でした。 クラスターは、 ClusterStagedUpdateRun の実行中に更新されました。

メッセージの例:

cannot continue the updateRun: failed to validate the updateRun: cluster `member-1` appears in more than one stage

解決策

クラスター ラベルを確認して、クラスターに両方のステージのラベルがないことを確認します。 ClusterStagedUpdateStrategyのステージで個別のクラスター ラベルが選択されていることを確認します。 次に、このステージが中止されるため、その戦略を参照する新しい ClusterStagedUpdateRun インスタンスを作成します。

同時更新実行のプリエンプション

複数の updateRunが同じ ClusterResourcePlacementをターゲットにすると、互いに競合します。

原因

updateRun コントローラーは、対応するバインディング仕様を更新し、その状態を RolloutStarted に設定することで、メンバー クラスターへの更新をトリガーします。 その後、コントローラーは 15 秒間待機し、バインディングをもう一度チェックして、リソースが正常に適用されたことを確認します。 15 秒の待機中に、現在の ClusterStagedUpdateRun インスタンスはこの変更を検出し、次の条件が満たされている場合は失敗します。

  • 同時実行中のClusterStagedUpdateRunが複数存在します。
  • 別の ClusterStagedUpdateRun インスタンスは、新しい構成を使用してバインディングをプリエンプションし、更新します。

メッセージの例:

cannot continue the updateRun: failed to process the request due to a client error: the binding of the updating cluster `member2` in the stage `dev` is not up-to-date with the desired status, please check the status of binding `example-placement-member2-e1a567da` and see if there is a concurrent updateRun referencing the same placement and updating the same cluster

メッセージでは、 member2 クラスターが dev ステージに割り込まれます。 その後、ユーザーは、 example-placement-member2-e1a567da バインディングを確認して、同時実行 ClusterStagedUpdateRun インスタンスが存在することを確認し、同じ ClusterResourcePlacement インスタンスを参照し、同じクラスターを更新するように求められます。

解決策

  1. 次のコマンドを実行して、名前空間スコープのリソース バインディング ClusterStagedUpdateRun を同時に調査します。
$ kubectl get clusterresourcebindings
NAME                                        WORKSYNCHRONIZED   RESOURCESAPPLIED   AGE
example-placement-member1-9a1ee3a0                                                20m
example-placement-member2-e1a567da          True               True               20m

エラー メッセージは example-placement-member2-e1a567daを指定しているため、次のコマンドを実行してバインディングを確認します。

    $ kubectl get clusterresourcebinding example-placement-member2-e1a567da -o yaml
    Name:         example-placement-member2-e1a567da
    Labels:       kubernetes-fleet.io/parent-CRP=example-placement
    ...
    API Version:  placement.kubernetes-fleet.io/v1beta1
    Kind:         ResourceBinding
    Metadata:
      Creation Timestamp:  2026-02-11T22:23:21Z
      Finalizers:
        kubernetes-fleet.io/scheduler-crb-cleanup
        kubernetes-fleet.io/work-cleanup
      Generation:        2
      ...
    Spec:
      Apply Strategy:
        Comparison Option:  PartialComparison
        Type:               ClientSideApply
        When To Apply:      Always
        When To Take Over:  Always
      Cluster Decision:
        Cluster Name:  member2
        Cluster Score:
          Affinity Score:               0
          Priority Score:               0
        Reason:                         Successfully scheduled resources for placement in "member2" (affinity score: 0, topology spread score: 0): picked by scheduling policy
        Selected:                       true
      Resource Snapshot Name:           example-placement-0-snapshot
      Scheduling Policy Snapshot Name:  example-placement-0
      State:                            Bound
      Target Cluster:                   member2
    Status:
      Conditions:
        Last Transition Time:  2026-02-11T22:23:48Z
        Message:               Detected the new changes on the resources and started the rollout process,
          resourceSnapshotIndex: 1, updateRun: example-run-1
        Observed Generation:   2
        Reason:                RolloutStarted
        Status:                True
        Type:                  RolloutStarted
        ...
  1. RolloutStarted条件が表示された場合は、参照されているClusterStagedUpdateRunインスタンスが、使用しているClusterStagedUpdateRun インスタンスであることを確認します。 別の ClusterStagedUpdateRun が参照されている場合は、その ClusterStagedUpdateRun が完了するまで待ちます。

  2. ClusterStagedUpdateRunがロールアウトする内容であることを確認します。そうでない場合は、このClusterStagedUpdateRunインスタンスを停止し、別のインスタンスを作成します。

  1. リソースを取得して、 StagedUpdateRun 初期化エラーを見つけます。
$ kubectl get stagedupdaterun web-app-rollout -n my-app-namespace
NAME              PLACEMENT           RESOURCE-SNAPSHOT-INDEX   POLICY-SNAPSHOT-INDEX   INITIALIZED   PROGRESSING   SUCCEEDED   AGE
web-app-rollout   web-app-placement   1                         0                       True          False         False       24m

PROGRESSINGフィールドとSUCCEEDED フィールドは、実行が失敗したことを示False

  1. エラーの詳細を取得するには、次のコマンドを実行します。
$ kubectl describe stagedupdaterun web-app-rollout -n my-app-namespace
Name:         web-app-rollout
Namespace:    my-app-namespace
...
API Version:  placement.kubernetes-fleet.io/v1beta1
Kind:         StagedUpdateRun
Metadata:
  Creation Timestamp:  2026-02-11T22:15:19Z
  Finalizers:
    kubernetes-fleet.io/stagedupdaterun-finalizer
  Generation:        2
  ...
Spec:
  Placement Name:                web-app-rollout-placement
  Resource Snapshot Index:       0
  Staged Rollout Strategy Name:  example-strategy
  State:                         Run
Status:
  Applied Strategy:
    Comparison Option:  PartialComparison
    Type:               ClientSideApply
    When To Apply:      Always
    When To Take Over:  Always
  Conditions:
    Last Transition Time:  2026-02-11T22:15:20Z
    Message:               The UpdateRun initialized successfully
    Observed Generation:   2
    Reason:                UpdateRunInitializedSuccessfully
    Status:                True
    Type:                  Initialized
    Last Transition Time:  2026-02-11T22:15:59Z
    Message:               The stages are aborted due to a non-recoverable error
    Observed Generation:   2
    Reason:                UpdateRunFailed
    Status:                False
    Type:                  Progressing
    Last Transition Time:  2026-02-11T22:16:59Z
    Message:               cannot continue the updateRun: failed to validate the updateRun: failed to process the request due to a client error: parent placement not found
    Observed Generation:   2
    Reason:                UpdateRunFailed
    Status:                False
    Type:                  Succeeded
  Deletion Stage Status:
    Clusters:
    Stage Name:                   kubernetes-fleet.io/deleteStage
  Policy Observed Cluster Count:  3
  Policy Snapshot Index Used:     0
  Resource Snapshot Index Used:   0
  Staged Update Strategy Snapshot:
    Stages:
      After Stage Tasks:
        Type:  Approval
      Before Stage Tasks:
        Type:  Approval
      Label Selector:
        Match Labels:
          Environment:  staging
      Max Concurrency:  1
      Name:             staging
  Stages Status:
    After Stage Task Status:
      Approval Request Name:  web-app-rollout-after-staging
      Type:                   Approval
    Before Stage Task Status:
      Approval Request Name:  web-app-rollout-before-staging
      Conditions:
        Last Transition Time:  2026-02-11T22:15:59Z
        Message:               ApprovalRequest object is created
        Observed Generation:   2
        Reason:                StageTaskApprovalRequestCreated
        Status:                True
        Type:                  ApprovalRequestCreated
      Type:                    Approval
    Clusters:
      Cluster Name:  cluster-1
      Cluster Name:  cluster-2
      Cluster Name:  cluster-3
    Conditions:
      Last Transition Time:  2026-02-11T22:15:59Z
      Message:               Not all before-stage tasks are completed, waiting for approval
      Observed Generation:   2
      Reason:                StageUpdatingWaiting
      Status:                False
      Type:                  Progressing
    Stage Name:              staging

Progressing条件がFalseの場合、理由の値はUpdateRunFailedされ、"回復不可能なエラーのためステージが中止されました" というメッセージが表示され、実行は失敗しました。

一般的な実行エラー

調整中の検証エラー

原因

調整のたびに、実行前に検証が行われます。 これらの検証エラーは、初期化中に発生する一般的な検証エラーに似ています。

解決策

"Aborted" updateRun メッセージは、実行障害が原因で生成される。 ランは復旧できません。 検証エラーが原因でエラーが発生した場合は、問題を修正し、新しい updateRun インスタンスを作成します。

親の位置が見つかりません

原因

StagedUpdateRun の初期化が完了しました。 そのため、参照する ResourcePlacement インスタンスが以前に存在している必要があります。 ResourcePlacement インスタンスの実行中にユーザーがStagedUpdateRunを削除しました。

メッセージの例:

cannot continue the updateRun: failed to validate the updateRun: failedto process the request due to a client error: parent placement not found

解決策

このステージが中止されるため、その配置を参照する新しい ResourcePlacement instance in the same namespace. Then, create a new StagedUpdateRun' インスタンスを作成します。

戦略が見つかりません

原因

StagedUpdateRun の初期化が完了しました。 そのため、参照する StagedUpdateStrategy インスタンスが以前に存在している必要があります。 ユーザーは、StagedUpdateStrategyの実行中にStagedUpdateRun インスタンスを削除しました。

メッセージの例:

cannot continue the updateRun: failed to validate the updateRun: referenced updateStrategy not found: ...

解決策

同じ名前空間に新しい StagedUpdateStrategy インスタンスを作成します。 次に、その戦略を参照する新しい StagedUpdateRun インスタンスを作成します。

無効なステージ タスク

原因

StagedUpdateRunは初期化を通過しました。 したがって、それを参照する StagedUpdateStrategy インスタンスは、以前にステージ タスクを正しく定義しました。 ユーザーが StagedUpdateStrategyを更新しました。

メッセージの例:

cannot continue the updateRun: failed to validate the updateRun: the before stage tasks are invalid, updateStrategy: ...

Soution

インスタンスを正しく更新するためのガイダンスについては、StagedUpdateStrategy を参照してください。 次に、新しい StagedUpdateRun インスタンスを作成します。

クラスターが複数回表示される

原因

StagedUpdateRunは初期化を渡し、クラスター ラベルは最初は有効でした。 クラスターは、実行中に更新されました。

メッセージの例:

cannot continue the updateRun: failed to validate the updateRun: cluster `member-1` appears in more than one stage

解決策

クラスター ラベルを確認して、クラスターに両方のステージのラベルがないことを確認します。 StagedUpdateStrategyのステージで個別のクラスター ラベルが選択されていることを確認し、その戦略を参照する新しいStagedUpdateRun インスタンスを作成します。

同時更新処理の優先権管理

複数の updateRunが同じ ClusterResourcePlacementをターゲットにしている場合は、互いに競合します。

原因

updateRun コントローラーは、対応するバインド specを更新し、その状態を RolloutStarted に設定することで、メンバー クラスターへの更新をトリガーします。 その後、コントローラーは 15 秒間待機し、バインディングをもう一度チェックして、リソースが正常に適用されたかどうかを判断します。 15 秒の待機中に、複数の同時実行 StagedUpdateRun インスタンスが存在する場合、別の StagedUpdateRun インスタンスが新しい構成を使用してバインディングをプリエンプションして更新し、現在の StagedUpdateRun インスタンスがこの変更を検出して失敗します。

メッセージの例:

cannot continue the updateRun: failed to process the request due to a client error: the binding of the updating cluster `member2` in the stage `dev` is not up-to-date with the desired status, please check the status of binding `my-app-namespace/web-app-placement-member2-43991b15` and see if there is a concurrent updateRun referencing the same placement and updating the same cluster

メッセージでは、 member2 クラスターが dev ステージに割り込まれます。 その後、同時実行my-app-namespace/web-app-placement-member2-43991b15 インスタンスが同じStagedUpdateRun インスタンスを参照し、同じクラスターを更新することを確認するために、ResourcePlacement バインドを確認するように求められます。

解決策

  1. 次のコマンドを実行して、名前空間スコープのリソース バインディング StagedUpdateRun を同時に調査します。
$ kubectl get resourcebindings -n my-app-namespace
NAME                                 WORKSYNCHRONIZED   RESOURCESAPPLIED   AGE
web-app-placement-member1-2afc7d7f                                         51m
web-app-placement-member2-43991b15   True               True               51m

エラー メッセージは web-app-placement-member2-43991b15を指定しているため、次のコマンドを実行してバインディングを確認します。

    $ kubectl describe resourcebinding web-app-placement-member2-43991b15 -n my-app-namespace
    Name:         web-app-placement-member2-43991b15
    Namespace:    my-app-namespace
    Labels:       kubernetes-fleet.io/parent-CRP=web-app-rollout-placement
    ...
    API Version:  placement.kubernetes-fleet.io/v1beta1
    Kind:         ResourceBinding
    Metadata:
      Creation Timestamp:  2026-02-11T22:23:21Z
      Finalizers:
        kubernetes-fleet.io/scheduler-crb-cleanup
        kubernetes-fleet.io/work-cleanup
      Generation:        2
      ...
    Spec:
      Apply Strategy:
        Comparison Option:  PartialComparison
        Type:               ClientSideApply
        When To Apply:      Always
        When To Take Over:  Always
      Cluster Decision:
        Cluster Name:  member2
        Cluster Score:
          Affinity Score:               0
          Priority Score:               0
        Reason:                         Successfully scheduled resources for placement in "member2" (affinity score: 0, topology spread score: 0): picked by scheduling policy
        Selected:                       true
      Resource Snapshot Name:           web-app-rollout-placement-0-snapshot
      Scheduling Policy Snapshot Name:  web-app-rollout-placement-0
      State:                            Bound
      Target Cluster:                   member2
    Status:
      Conditions:
        Last Transition Time:  2026-02-11T22:23:48Z
        Message:               Detected the new changes on the resources and started the rollout process,
          resourceSnapshotIndex: 1, updateRun: app-rollout-placement
        Observed Generation:   2
        Reason:                RolloutStarted
        Status:                True
        Type:                  RolloutStarted
        ...
  1. RolloutStarted条件が表示された場合は、参照されているStagedUpdateRunインスタンスが自分が作業しているものであることを確認します。 別の StagedUpdateRun インスタンスが参照されている場合は、そのインスタンスが完了するまで待ちます。

  2. StagedUpdateRun インスタンスがロールアウト対象であることを確認します。そうでない場合は、このStagedUpdateRunインスタンスを停止し、別のインスタンスを作成します。