É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.