概要
この記事では、Microsoft Azure Kubernetes Fleet Manager で更新実行 API を使用しているときに更新プログラムの実行が停止したときに生成される 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 updateRun is stuck waiting for member2 cluster(s) in stage staging to finish
updating, please check placement status for potential errors
Observed Generation: 2
Reason: UpdateRunStuck
Status: False
Type: Progressing
更新プログラムの実行停止エラーを調査する
-
ClusterStagedUpdateRun"スタック" エラー メッセージを見つけるには、次のコマンドを実行します。
$ kubectl get csur example-run
NAME PLACEMENT RESOURCE-SNAPSHOT-INDEX POLICY-SNAPSHOT-INDEX INITIALIZED PROGRESSING SUCCEEDED AGE
example-run example-placement 0 0 True False 24m
PROGRESSING フィールドの値はFalse。 この値は、実行が停止したことを示します。 原因を特定するには、さらに調査が必要です。
- エラーの詳細については、次のコマンドを実行します。
$ kubectl get csur example-run -o yaml
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:20:59Z
Message: The updateRun is stuck waiting for member2 cluster(s) in stage staging to finish
updating, please check placement status for potential errors
Observed Generation: 2
Reason: UpdateRunStuck
Status: False
Type: Progressing
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
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
Clusters:
Cluster Name: member2
Conditions:
Last Transition Time: 2026-02-11T22:15:59Z
Message: The updateRun is stuck waiting for member2 cluster(s) in stage staging to finish
updating, please check placement status for potential errors
Observed Generation: 2
Reason: ClusterUpdatingStarted
Status: True
Type: Started
...
Conditions:
Last Transition Time: 2026-02-11T22:15:59Z
Message: Clusters in the stage started updating
Observed Generation: 2
Reason: StageUpdatingStarted
Status: True
Type: Progressing
...
Stage Name: staging
このメッセージは、ClusterStagedUpdateRun内のmember2 クラスターの更新が完了するまで待機している間、Stages Statusがスタックしていることを示しています。
コントローラーは、対応するバインディングを更新することで、リソースをメンバー クラスターにデプロイします。 その後、更新が完了したかどうかを定期的に確認します。 現在の既定値の 5 分後にバインドをまだ使用できない場合、コントローラーはロールアウトが停止していると判断し、状態を報告します。
スタック ClusterStagedUpdateRun は、通常、問題がクラスターまたはリソースに影響することを示します。
-
ClusterResourcePlacementの状態を確認します。
$ kubectl describe crp example-placement
Name: example-placement
...
API Version: placement.kubernetes-fleet.io/v1beta1
Kind: ClusterResourcePlacement
Metadata:
Creation Timestamp: 2026-02-11T21:02:36Z
Finalizers:
kubernetes-fleet.io/crp-cleanup
kubernetes-fleet.io/scheduler-cleanup
Generation: 1
...
Spec:
Policy:
Placement Type: PickAll
Resource Selectors:
Group: ""
Kind: Namespace
Name: test-namespace
Selection Scope: NamespaceWithResources
Version: v1
Revision History Limit: 10
Status Reporting Scope: ClusterScopeOnly
Strategy:
Type: External
Status:
Conditions:
Last Transition Time: 2026-02-11T21:02:37Z
Message: found all cluster needed as specified by the scheduling policy, found 3 cluster(s)
Observed Generation: 1
Reason: SchedulingPolicyFulfilled
Status: True
Type: ResourcePlacementScheduled
Last Transition Time: 2026-02-11T21:02:37Z
Message: Rollout is controlled by an external controller and no resource snapshot name is observed across clusters, probably rollout has not started yet
Observed Generation: 1
Reason: RolloutControlledByExternalController
Status: Unknown
Type: ResourcePlacementRolloutStarted
Placement Statuses:
Cluster Name: member2
Conditions:
Last Transition Time: 2026-01-12T22:37:57Z
Message: Successfully scheduled resources for placement in "member2" (affinity score: 0, topology spread score: 0): picked by scheduling policy
Observed Generation: 1
Reason: Scheduled
Status: True
Type: Scheduled
Last Transition Time: 2026-01-12T22:44:08Z
Message: Detected the new changes on the resources and started the rollout process, resourceSnapshotIndex: 1, updateRun: example-run
Observed Generation: 1
Reason: RolloutStarted
Status: True
Type: RolloutStarted
Last Transition Time: 2026-01-12T22:44:08Z
Message: No override rules are configured for the selected resources
Observed Generation: 1
Reason: NoOverrideSpecified
Status: True
Type: Overridden
Last Transition Time: 2026-01-12T22:44:08Z
Message: All of the works are synchronized to the latest
Observed Generation: 1
Reason: AllWorkSynced
Status: True
Type: WorkSynchronized
Last Transition Time: 2026-01-12T22:44:08Z
Message: All corresponding work objects are applied
Observed Generation: 1
Reason: AllWorkHaveBeenApplied
Status: True
Type: Applied
Last Transition Time: 2026-01-12T22:44:08Z
Message: Work object example-placement-work is not yet available
Observed Generation: 1
Reason: NotAllWorkAreAvailable
Status: False
Type: Available
Failed Placements:
Condition:
Last Transition Time: 2026-01-12T22:44:08Z
Message: Manifest is not yet available; Fleet will check again later
Observed Generation: 1
Reason: ManifestNotAvailableYet
Status: False
Type: Available
Group: apps
Kind: Deployment
Name: nginx-deployment
Namespace: test-namespace
Version: v1
...
Available条件がFalseされ、Reason値がNotAllWorkAreAvailable。
Failed Placementsセクションには、nginx-deploymentが使用できないことが示されています。
- イメージのプル エラーを確認するには、
member2クラスターを確認します。
kubectl config use-context member2
kubectl get deployment -n test-namespace
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/3 3 0 9m54s
kubectl get pods -n test-namespace
NAME READY STATUS RESTARTS AGE
nginx-deployment-5d9874b8b9-gnmm2 0/1 InvalidImageName 0 10m
nginx-deployment-5d9874b8b9-p9zsx 0/1 InvalidImageName 0 10m
nginx-deployment-5d9874b8b9-wxmd7 0/1 InvalidImageName 0 10m
注
同様のシナリオは、 updateRun の状態が Stopに設定されている場合に発生する可能性があります。
解決策
この問題をデバッグするためのガイダンスについては、 Azure Kubernetes Fleet Manager (プレビュー) での ResourcePlacement API のトラブルシューティングに関するページを参照してください。
問題を解決したら、新しい 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 24m
PROGRESSING フィールドの値はFalse。 この値は、実行が停止したことを示します。 原因を特定するには、さらに調査が必要です。
- エラーの詳細については、次のコマンドを実行します。
$ kubectl describe stagedupdaterun <staged-update-run-name> -n <namespace-name>
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:20:59Z
Message: The updateRun is stuck waiting for member2 cluster(s) in stage staging to finish
updating, please check placement status for potential errors
Observed Generation: 2
Reason: UpdateRunStuck
Status: False
Type: Progressing
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
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
Clusters:
Cluster Name: member2
Conditions:
Last Transition Time: 2026-02-11T22:15:59Z
Message: The updateRun is stuck waiting for member2 cluster(s) in stage staging to finish
updating, please check placement status for potential errors
Observed Generation: 2
Reason: ClusterUpdatingStarted
Status: True
Type: Started
...
Conditions:
Last Transition Time: 2026-02-11T22:15:59Z
Message: Clusters in the stage started updating
Observed Generation: 2
Reason: StageUpdatingStarted
Status: True
Type: Progressing
...
Stage Name: staging
このメッセージは、StagedUpdateRun内のmember2 クラスターの更新が完了するまで、Stages Statusが停止していることを示しています。
コントローラーは、対応するバインディングを更新することで、リソースをメンバー クラスターにデプロイします。 その後、更新が完了したかどうかを定期的に確認します。 現在の既定値の 5 分後にバインドをまだ使用できない場合、コントローラーはロールアウトが停止していると判断し、状態を報告します。
スタック StagedUpdateRun は、通常、問題がクラスターまたはリソースに影響することを示します。
-
ClusterResourcePlacementの状態を確認します。
$ kubectl describe rp web-app-placement -n my-app-namespace
Name: web-app-placement
Namespace: my-app-namespace
...
API Version: placement.kubernetes-fleet.io/v1beta1
Kind: ReourcePlacement
Metadata:
Creation Timestamp: 2026-02-11T21:02:36Z
Finalizers:
kubernetes-fleet.io/crp-cleanup
kubernetes-fleet.io/scheduler-cleanup
Generation: 1
...
Spec:
Policy:
Placement Type: PickAll
Resource Selectors:
Group: apps
Kind: Deployment
Name: nginx-deployment
Selection Scope: NamespaceWithResources
Version: v1
Revision History Limit: 10
Status Reporting Scope: ClusterScopeOnly
Strategy:
Type: External
Status:
Conditions:
Last Transition Time: 2026-02-11T21:02:37Z
Message: found all cluster needed as specified by the scheduling policy, found 3 cluster(s)
Observed Generation: 1
Reason: SchedulingPolicyFulfilled
Status: True
Type: ResourcePlacementScheduled
Last Transition Time: 2026-02-11T21:02:37Z
Message: Rollout is controlled by an external controller and no resource snapshot name is observed across clusters, probably rollout has not started yet
Observed Generation: 1
Reason: RolloutControlledByExternalController
Status: Unknown
Type: ResourcePlacementRolloutStarted
Placement Statuses:
Cluster Name: member2
Conditions:
Last Transition Time: 2026-01-12T22:37:57Z
Message: Successfully scheduled resources for placement in "member2" (affinity score: 0, topology spread score: 0): picked by scheduling policy
Observed Generation: 1
Reason: Scheduled
Status: True
Type: Scheduled
Last Transition Time: 2026-01-12T22:44:08Z
Message: Detected the new changes on the resources and started the rollout process, resourceSnapshotIndex: 1, updateRun: example-run
Observed Generation: 1
Reason: RolloutStarted
Status: True
Type: RolloutStarted
Last Transition Time: 2026-01-12T22:44:08Z
Message: No override rules are configured for the selected resources
Observed Generation: 1
Reason: NoOverrideSpecified
Status: True
Type: Overridden
Last Transition Time: 2026-01-12T22:44:08Z
Message: All of the works are synchronized to the latest
Observed Generation: 1
Reason: AllWorkSynced
Status: True
Type: WorkSynchronized
Last Transition Time: 2026-01-12T22:44:08Z
Message: All corresponding work objects are applied
Observed Generation: 1
Reason: AllWorkHaveBeenApplied
Status: True
Type: Applied
Last Transition Time: 2026-01-12T22:44:08Z
Message: Work object example-placement-work is not yet available
Observed Generation: 1
Reason: NotAllWorkAreAvailable
Status: False
Type: Available
Failed Placements:
Condition:
Last Transition Time: 2026-01-12T22:44:08Z
Message: Manifest is not yet available; Fleet will check again later
Observed Generation: 1
Reason: ManifestNotAvailableYet
Status: False
Type: Available
Group: apps
Kind: Deployment
Name: nginx-deployment
Namespace: my-app-namespace
Version: v1
...
Available条件がFalseされ、Reason値がNotAllWorkAreAvailable。
Failed Placementsセクションには、nginx-deploymentが使用できないことが示されています。
-
member2クラスターを確認して、イメージのプル エラーを確認します。
kubectl config use-context member2
kubectl get deployment -n test-namespace
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/3 3 0 9m54s
kubectl get pods -n test-namespace
NAME READY STATUS RESTARTS AGE
nginx-deployment-5d9874b8b9-gnmm2 0/1 InvalidImageName 0 10m
nginx-deployment-5d9874b8b9-p9zsx 0/1 InvalidImageName 0 10m
nginx-deployment-5d9874b8b9-wxmd7 0/1 InvalidImageName 0 10m
注
同様のシナリオは、 updateRunの状態が Stopに設定されている場合に発生する可能性があります。
解決策
問題をデバッグする方法のガイダンスについては、 Azure Kubernetes Fleet Manager (プレビュー) の ResourcePlacement API のトラブルシューティング を参照してください。
問題を解決したら、新しい StagedUpdateRun インスタンスを作成してロールアウトを再開します。 その後、スタック StagedUpdateRun インスタンスを削除できます。