Delen via


Fout bij doorgeven van resources: ClusterResourcePlacementWorkSynchronized is onwaar

In dit artikel wordt beschreven hoe u problemen oplost ClusterResourcePlacementWorkSynchronized wanneer u resources doorgeeft met behulp van het ClusterResourcePlacement API-object in Azure Kubernetes Fleet Manager.

Symptomen

Wanneer u het ClusterResourcePlacement API-object in Azure Kubernetes Fleet Manager gebruikt om resources door te geven, worden ClusterResourcePlacement de bijbehorende werkobjecten niet gesynchroniseerd met de wijzigingen en wordt de status van de ClusterResourcePlacementWorkSynchronized voorwaarde weergegeven als False.

Notitie

Voor meer informatie over waarom de synchronisatie van werkobjecten mislukt, kunt u de logboeken van de werkgeneratorcontroller controleren.

Oorzaak

Dit probleem kan een van de volgende oorzaken hebben:

  • Er treedt een fout op tijdens het genereren van het bijbehorende werkobject.
  • Het gehulde object is niet goed opgemaakt.

Casestudy

In het volgende voorbeeld probeert het ClusterResourcePlacement een resource door te geven aan een geselecteerd cluster, maar het werkobject wordt niet bijgewerkt om de meest recente wijzigingen weer te geven omdat het geselecteerde cluster is beƫindigd.

Specificatie clusterResourcePlacement

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

ClusterResourcePlacement-status

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

In de ClusterResourcePlacement status wordt de status van de ClusterResourcePlacementWorkSynchronized voorwaarde weergegeven als False. Het bericht hiervoor geeft aan dat het werkobject crp1-work geen nieuwe inhoud mag genereren binnen de naamruimte fleet-member-kind-cluster-1 omdat het momenteel wordt beƫindigd.

Oplossing

In deze situatie zijn hier verschillende mogelijke oplossingen:

  • Wijzig het ClusterResourcePlacement met een nieuw geselecteerd cluster.
  • Verwijder de ClusterResourcePlacement taak om het werk via garbagecollection te verwijderen.
  • Opnieuw deelnemen aan het lidcluster. De naamruimte kan alleen opnieuw worden gegenereerd nadat het cluster opnieuw is samengevoegd.

In andere situaties kunt u ervoor kiezen te wachten totdat het werk is doorgegeven.

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.