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.