Error de propagación de recursos: ClusterResourcePlacementWorkSynchronized es false
En este artículo se describe cómo solucionar problemas ClusterResourcePlacementWorkSynchronized
al propagar recursos mediante el ClusterResourcePlacement
objeto de API en Azure Kubernetes Fleet Manager.
Síntomas
Cuando se usa el ClusterResourcePlacement
objeto de API en Azure Kubernetes Fleet Manager para propagar recursos, si ClusterResourcePlacement
se actualiza , los objetos de trabajo asociados no se sincronizan con los cambios y el estado de la ClusterResourcePlacementWorkSynchronized
condición se muestra como False
.
Nota:
Para obtener más información sobre por qué se produce un error en la sincronización de objetos de trabajo, puede comprobar los registros del controlador del generador de trabajo.
Causa
Este problema puede producirse por uno de los siguientes motivos:
- El controlador encuentra un error al intentar generar el objeto de trabajo correspondiente.
- El objeto sobre no tiene el formato correcto.
Caso práctico
En el ejemplo siguiente, ClusterResourcePlacement
intenta propagar un recurso a un clúster seleccionado, pero el objeto de trabajo no se actualiza para reflejar los cambios más recientes porque se ha terminado el clúster seleccionado.
Especificación ClusterResourcePlacement
spec:
resourceSelectors:
- group: rbac.authorization.k8s.io
kind: ClusterRole
name: secret-reader
version: v1
policy:
placementType: PickN
numberOfClusters: 1
strategy:
type: RollingUpdate
Estado 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
En el ClusterResourcePlacement
estado , el estado de la ClusterResourcePlacementWorkSynchronized
condición se muestra como False
. El mensaje para él indica que el objeto crp1-work
de trabajo está prohibido generar contenido nuevo en el espacio de nombres fleet-member-kind-cluster-1
porque está finalizando actualmente.
Solución
En esta situación, estas son varias soluciones potenciales:
- Modifique con
ClusterResourcePlacement
un clúster recién seleccionado. - Elimine para
ClusterResourcePlacement
quitar el trabajo a través de la recolección de elementos no utilizados. - Vuelva a unir el clúster de miembros. El espacio de nombres solo se puede volver a generar después de volver a unir el clúster.
En otras situaciones, puede optar por esperar a que el trabajo finalice la propagación.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.