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 False
angezeigt.
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.