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.