Compartir a través de


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.