Condividi tramite


Errore di propagazione delle risorse: ClusterResourcePlacementWorkSynchronized è false

Questo articolo descrive come risolvere i problemi ClusterResourcePlacementWorkSynchronized durante la propagazione delle risorse usando l'oggetto ClusterResourcePlacement API in Azure Kubernetes Fleet Manager.

Sintomi

Quando si usa l'oggetto ClusterResourcePlacement API in Azure Kubernetes Fleet Manager per propagare le risorse, se ClusterResourcePlacement viene aggiornato, gli oggetti di lavoro associati non vengono sincronizzati con le modifiche e lo stato della ClusterResourcePlacementWorkSynchronized condizione viene visualizzato come False.

Note

Per ottenere altre informazioni sul motivo per cui la sincronizzazione degli oggetti di lavoro ha esito negativo, è possibile controllare i log del controller del generatore di lavoro.

Causa

Questo problema può verificarsi per uno dei motivi seguenti:

  • Il controller rileva un errore durante il tentativo di generare l'oggetto di lavoro corrispondente.
  • L'oggetto in busto non è formattato correttamente.

Case study

Nell'esempio seguente l'oggetto ClusterResourcePlacement sta tentando di propagare una risorsa a un cluster selezionato, ma l'oggetto di lavoro non viene aggiornato in modo da riflettere le modifiche più recenti perché il cluster selezionato è stato terminato.

Specifica ClusterResourcePlacement

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

Stato di 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

Nello stato lo stato della ClusterResourcePlacement ClusterResourcePlacementWorkSynchronized condizione viene visualizzato come False. Il messaggio indica che l'oggetto crp1-work di lavoro non è consentito generare nuovo contenuto all'interno dello spazio dei nomi fleet-member-kind-cluster-1 perché è attualmente in fase di terminazione.

Risoluzione

In questa situazione, ecco alcune possibili soluzioni:

  • ClusterResourcePlacement Modificare con un cluster appena selezionato.
  • Eliminare per ClusterResourcePlacement rimuovere il lavoro tramite Garbage Collection.
  • Ricongiunire il cluster membro. Lo spazio dei nomi può essere rigenerato solo dopo la ricongiurzione del cluster.

In altre situazioni, è possibile scegliere di attendere il completamento della propagazione del lavoro.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.