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.

Annotazioni

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 .

Motivo

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 racchiuso non è formattato correttamente.

Caso di studio

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 Posizionamento delle Risorse del Cluster

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 ClusterResourcePlacement, la condizione ClusterResourcePlacementWorkSynchronized appare come False. Il messaggio indica che non è consentito all'oggetto di lavoro crp1-work 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:

  • Modifica il ClusterResourcePlacement con un cluster appena selezionato.
  • Elimina ClusterResourcePlacement per rimuovere il lavoro attraverso la Garbage Collection.
  • Ricongiunire il cluster membro. Lo spazio dei nomi può essere rigenerato solo dopo la ricongiunzione del cluster.

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

Contattaci per ricevere assistenza

In caso di domande, è possibile porre domande al supporto della community di Azure. È anche possibile inviare commenti e suggerimenti sul prodotto alla community di commenti e suggerimenti di Azure.