共用方式為


資源傳播失敗: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

在狀態中ClusterResourcePlacementClusterResourcePlacementWorkSynchronized,條件狀態會顯示為 False。 其訊息表示禁止工作物件 crp1-work 在命名空間 fleet-member-kind-cluster-1 內產生新內容,因為它目前正在終止。

解決方法

在此情況下,以下是數個可能的解決方案:

  • ClusterResourcePlacement使用新選取的叢集修改 。
  • ClusterResourcePlacement刪除 以透過垃圾收集移除工作。
  • 重新加入成員叢集。 命名空間只能在重新加入叢集之後重新產生。

在其他情況下,您可以選擇等待工作完成傳播。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。