Dela via


Resursspridningsfel: ClusterResourcePlacementWorkSynchronized är falskt

Den här artikeln beskriver hur du felsöker ClusterResourcePlacementWorkSynchronized problem när du sprider resurser med API-objektet ClusterResourcePlacement i Azure Kubernetes Fleet Manager.

Symptom

När du använder ClusterResourcePlacement API-objektet i Azure Kubernetes Fleet Manager för att sprida resurser synkroniseras inte de associerade arbetsobjekten med ändringarna om ClusterResourcePlacement de uppdateras och villkorsstatusen ClusterResourcePlacementWorkSynchronized visas som False.

Kommentar

Om du vill ha mer information om varför synkroniseringen av arbetsobjekt misslyckas kan du kontrollera arbetsgeneratorns kontrollantloggar .

Orsak

Det här problemet kan inträffa av någon av följande orsaker:

  • Kontrollanten får ett fel vid försök att generera motsvarande arbetsobjekt.
  • Det omslutna objektet är inte välformaterat.

Fallstudie

I följande exempel ClusterResourcePlacement försöker sprida en resurs till ett valt kluster, men arbetsobjektet uppdateras inte för att återspegla de senaste ändringarna eftersom det valda klustret har avslutats.

ClusterResourcePlacement-specifikation

spec:
  resourceSelectors:
    - group: rbac.authorization.k8s.io
      kind: ClusterRole
      name: secret-reader
      version: v1
  policy:
    placementType: PickN
    numberOfClusters: 1
  strategy:
    type: RollingUpdate

ClusterResourcePlacement-status

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

I statusen ClusterResourcePlacement visas villkorsstatusen ClusterResourcePlacementWorkSynchronized som False. Meddelandet för det anger att arbetsobjektet crp1-work inte kan generera nytt innehåll i namnområdet fleet-member-kind-cluster-1 eftersom det för närvarande avslutas.

Åtgärd

I den här situationen finns det flera möjliga lösningar:

  • ClusterResourcePlacement Ändra med ett nyligen valt kluster.
  • ClusterResourcePlacement Ta bort för att ta bort arbetet via skräpinsamling.
  • Gå med i medlemsklustret igen. Namnområdet kan bara återskapas när klustret har återansluts.

I andra situationer kan du välja att vänta tills arbetet har slutförts.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.