資源傳播失敗:ClusterResourcePlacementWorkSynchronized 為 false
本文說明如何在 Azure Kubernetes Fleet Manager 中使用 ClusterResourcePlacement
API 對象傳播資源時,針對問題進行疑難解答ClusterResourcePlacementWorkSynchronized
。
徵兆
使用 ClusterResourcePlacement
Azure Kubernetes Fleet Manager 中的 API 物件傳播資源時,如果 ClusterResourcePlacement
已更新,相關聯的工作物件不會與變更同步處理,而 ClusterResourcePlacementWorkSynchronized
條件狀態會顯示為 False
。
注意
若要取得工作物件同步處理失敗原因的詳細資訊,您可以檢查 工作產生器控制器 記錄。
原因
此問題可能會因為下列其中一個原因而發生:
- 控制器嘗試產生對應的工作物件時發生錯誤。
- 信封物件的格式不正確。
案例研究
在下列範例中, ClusterResourcePlacement
嘗試將資源傳播至選取的叢集,但工作物件不會更新以反映最新的變更,因為選取的叢集已終止。
ClusterResourcePlacement 規格
spec:
resourceSelectors:
- group: rbac.authorization.k8s.io
kind: ClusterRole
name: secret-reader
version: v1
policy:
placementType: PickN
numberOfClusters: 1
strategy:
type: RollingUpdate
ClusterResourcePlacement 狀態
spec:
policy:
numberOfClusters: 1
placementType: PickN
resourceSelectors:
- group: ""
kind: Namespace
name: test-ns
version: v1
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
status:
conditions:
- lastTransitionTime: "2024-05-14T18:05:04Z"
message: found all cluster needed as specified by the scheduling policy, found
1 cluster(s)
observedGeneration: 1
reason: SchedulingPolicyFulfilled
status: "True"
type: ClusterResourcePlacementScheduled
- lastTransitionTime: "2024-05-14T18:05:05Z"
message: All 1 cluster(s) start rolling out the latest resource
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: ClusterResourcePlacementRolloutStarted
- lastTransitionTime: "2024-05-14T18:05:05Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: ClusterResourcePlacementOverridden
- lastTransitionTime: "2024-05-14T18:05:05Z"
message: There are 1 cluster(s) which have not finished creating or updating work(s)
yet
observedGeneration: 1
reason: WorkNotSynchronizedYet
status: "False"
type: ClusterResourcePlacementWorkSynchronized
observedResourceIndex: "0"
placementStatuses:
- clusterName: kind-cluster-1
conditions:
- lastTransitionTime: "2024-05-14T18:05:04Z"
message: 'Successfully scheduled resources for placement in kind-cluster-1 (affinity
score: 0, topology spread score: 0): picked by scheduling policy'
observedGeneration: 1
reason: Scheduled
status: "True"
type: Scheduled
- lastTransitionTime: "2024-05-14T18:05:05Z"
message: Detected the new changes on the resources and started the rollout process
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: RolloutStarted
- lastTransitionTime: "2024-05-14T18:05:05Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: Overridden
- lastTransitionTime: "2024-05-14T18:05:05Z"
message: 'Failed to synchronize the work to the latest: works.placement.kubernetes-fleet.io
"crp1-work" is forbidden: unable to create new content in namespace fleet-member-kind-cluster-1
because it is being terminated'
observedGeneration: 1
reason: SyncWorkFailed
status: "False"
type: WorkSynchronized
selectedResources:
- kind: Namespace
name: test-ns
version: v1
在狀態中ClusterResourcePlacement
ClusterResourcePlacementWorkSynchronized
,條件狀態會顯示為 False
。 其訊息表示禁止工作物件 crp1-work
在命名空間 fleet-member-kind-cluster-1
內產生新內容,因為它目前正在終止。
解決方法
在此情況下,以下是數個可能的解決方案:
ClusterResourcePlacement
使用新選取的叢集修改 。ClusterResourcePlacement
刪除 以透過垃圾收集移除工作。- 重新加入成員叢集。 命名空間只能在重新加入叢集之後重新產生。
在其他情況下,您可以選擇等待工作完成傳播。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。