Freigeben über


Fehler bei der Ressourcenverteilung: "ClusterResourcePlacementWorkSynchronized" ist "false".

In diesem Artikel wird beschrieben, wie Sie Probleme beheben ClusterResourcePlacementWorkSynchronized , wenn Sie Ressourcen mithilfe des ClusterResourcePlacement API-Objekts in Azure Kubernetes Fleet Manager verteilen.

Symptome

Wenn Sie das ClusterResourcePlacement API-Objekt in Azure Kubernetes Fleet Manager verwenden, um Ressourcen zu verteilen, wenn die ClusterResourcePlacement Aktualisierung erfolgt, werden die zugeordneten Arbeitsobjekte nicht mit den Änderungen synchronisiert, und der ClusterResourcePlacementWorkSynchronized Bedingungsstatus wird als Falseangezeigt.

Notiz

Weitere Informationen dazu, warum die Synchronisierung von Arbeitsobjekten fehlschlägt, können Sie die Arbeitsgenerator-Controllerprotokolle überprüfen.

Ursache

Dieses Problem kann aus einem der folgenden Gründe auftreten:

  • Der Controller tritt beim Versuch, das entsprechende Arbeitsobjekt zu generieren, auf einen Fehler.
  • Das umschlageobjekt ist nicht gut formatiert.

Fallstudie

Im folgenden Beispiel wird versucht, ClusterResourcePlacement eine Ressource an einen ausgewählten Cluster zu verteilen, das Arbeitsobjekt wird jedoch nicht aktualisiert, um die neuesten Änderungen widerzuspiegeln, da der ausgewählte Cluster beendet wurde.

ClusterResourcePlacement-Spezifikation

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

ClusterResourcePlacement Im Status wird der ClusterResourcePlacementWorkSynchronized Bedingungsstatus als False. Die Nachricht dafür weist darauf hin, dass das Arbeitsobjekt crp1-work daran gehindert ist, neue Inhalte im Namespace fleet-member-kind-cluster-1 zu generieren, da es derzeit beendet wird.

Lösung

In dieser Situation gibt es mehrere mögliche Lösungen:

  • Ändern Sie das ClusterResourcePlacement Mit einem neu ausgewählten Cluster.
  • Löschen Sie den ClusterResourcePlacement Vorgang, um die Garbage Collection zu entfernen.
  • Erneut an dem Membercluster teilnehmen. Der Namespace kann nur nach dem erneuten Beitreten des Clusters neu generiert werden.

In anderen Situationen können Sie abwarten, bis die Vermehrung der Arbeit abgeschlossen ist.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.