概要
この記事では、更新プログラムを実行する 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
エラーを調査する
- 次のコマンドを実行して、
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
PROGRESSINGとSUCCEEDEDフィールドの値がFalseされます。 この値は、実行が失敗したことを示します。
- エラーの詳細を取得するには、次のコマンドを実行します。
$ 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 インスタンスを参照し、同じクラスターを更新するように求められます。
解決策
- 次のコマンドを実行して、名前空間スコープのリソース バインディング
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
...
RolloutStarted条件が表示された場合は、参照されているClusterStagedUpdateRunインスタンスが、使用しているClusterStagedUpdateRunインスタンスであることを確認します。 別のClusterStagedUpdateRunが参照されている場合は、そのClusterStagedUpdateRunが完了するまで待ちます。ClusterStagedUpdateRunがロールアウトする内容であることを確認します。そうでない場合は、このClusterStagedUpdateRunインスタンスを停止し、別のインスタンスを作成します。
- リソースを取得して、
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。
- エラーの詳細を取得するには、次のコマンドを実行します。
$ 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 バインドを確認するように求められます。
解決策
- 次のコマンドを実行して、名前空間スコープのリソース バインディング
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
...
RolloutStarted条件が表示された場合は、参照されているStagedUpdateRunインスタンスが自分が作業しているものであることを確認します。 別のStagedUpdateRunインスタンスが参照されている場合は、そのインスタンスが完了するまで待ちます。StagedUpdateRunインスタンスがロールアウト対象であることを確認します。そうでない場合は、このStagedUpdateRunインスタンスを停止し、別のインスタンスを作成します。