Partager via


Échec de propagation des ressources : ClusterResourcePlacementWorkSynchronized a la valeur false

Cet article explique comment résoudre les ClusterResourcePlacementWorkSynchronized problèmes liés à la propagation des ressources à l’aide de l’objet ClusterResourcePlacement API dans Azure Kubernetes Fleet Manager.

Symptômes

Lorsque vous utilisez l’objet ClusterResourcePlacement API dans Azure Kubernetes Fleet Manager pour propager des ressources, si la ClusterResourcePlacement valeur est mise à jour, les objets de travail associés ne sont pas synchronisés avec les modifications et l’état de la ClusterResourcePlacementWorkSynchronized condition s’affiche .False

Note

Pour obtenir plus d’informations sur la raison pour laquelle la synchronisation des objets de travail échoue, vous pouvez vérifier les journaux du contrôleur de générateur de travail.

Cause

Ce problème peut se produire pour l’une des raisons suivantes :

  • Le contrôleur rencontre une erreur lors de la tentative de génération de l’objet de travail correspondant.
  • L’objet enveloppe n’est pas bien mis en forme.

Étude de cas

Dans l’exemple suivant, il ClusterResourcePlacement tente de propager une ressource à un cluster sélectionné, mais l’objet de travail n’est pas mis à jour pour refléter les dernières modifications, car le cluster sélectionné a été arrêté.

Spécification ClusterResourcePlacement

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

État de 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

Dans l’état, l’état ClusterResourcePlacement de la ClusterResourcePlacementWorkSynchronized condition s’affiche sous la forme False. Le message pour celui-ci indique que l’objet crp1-work de travail est interdit de générer un nouveau contenu dans l’espace de noms fleet-member-kind-cluster-1 , car il se termine actuellement.

Résolution

Dans ce cas, voici plusieurs solutions potentielles :

  • Modifiez l’élément ClusterResourcePlacement avec un cluster nouvellement sélectionné.
  • Supprimez le ClusterResourcePlacement travail pour supprimer le travail via le garbage collection.
  • Rejoignez le cluster membre. L’espace de noms ne peut être régénéré qu’après avoir rejoint le cluster.

Dans d’autres situations, vous pouvez choisir d’attendre que le travail se termine.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.