Fout bij het doorgeven van resources: ClusterResourcePlacementScheduled is onwaar
In dit artikel wordt beschreven hoe u problemen oplost ClusterResourcePlacementScheduled
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, kan de planner voor Fleet-workloads niet alle vereiste clusters vinden die zijn opgegeven door het planningsbeleid en wordt de status van de ClusterResourcePlacementScheduled
voorwaarde weergegeven als False
.
Notitie
Voor meer informatie over waarom de planning mislukt, kunt u de plannerlogboeken controleren.
Oorzaak
Dit probleem kan een van de volgende oorzaken hebben:
- Het plaatsingsbeleid is ingesteld op
PickFixed
, maar de opgegeven clusternamen komen niet overeen met de naam van een lidcluster in de vloot of het opgegeven cluster is niet meer verbonden met de vloot. - Het plaatsingsbeleid is ingesteld op
PickN
en N-clusters worden opgegeven, maar minder dan N-clusters zijn toegevoegd aan de vloot of voldoen aan het plaatsingsbeleid. - De
ClusterResourcePlacement
resourceselector selecteert een gereserveerde naamruimte.
Notitie
Wanneer het plaatsingsbeleid is ingesteld op PickAll
, wordt de ClusterResourcePlacementScheduled
voorwaarde ingesteld op True
.
Casestudy
In het volgende voorbeeld probeert het ClusterResourcePlacement
met een PickN
plaatsingsbeleid resources door te geven aan twee clusters met env:prod
het label . De twee clusters, benoemd kind-cluster-1
en kind-cluster-2
, zijn toegevoegd aan de vloot. Slechts één lidcluster heeft kind-cluster-1
echter het label env:prod
.
Specificatie clusterResourcePlacement
spec:
policy:
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: prod
numberOfClusters: 2
placementType: PickN
resourceSelectors:
...
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
ClusterResourcePlacement-status
status:
conditions:
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: could not find all the clusters needed as specified by the scheduling
policy
observedGeneration: 1
reason: SchedulingPolicyUnfulfilled
status: "False"
type: ClusterResourcePlacementScheduled
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: All 1 cluster(s) start rolling out the latest resource
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: ClusterResourcePlacementRolloutStarted
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: ClusterResourcePlacementOverridden
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: Works(s) are successfully created or updated in the 1 target clusters'
namespaces
observedGeneration: 1
reason: WorkSynchronized
status: "True"
type: ClusterResourcePlacementWorkSynchronized
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: The selected resources are successfully applied to 1 clusters
observedGeneration: 1
reason: ApplySucceeded
status: "True"
type: ClusterResourcePlacementApplied
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: The selected resources in 1 cluster are available now
observedGeneration: 1
reason: ResourceAvailable
status: "True"
type: ClusterResourcePlacementAvailable
observedResourceIndex: "0"
placementStatuses:
- clusterName: kind-cluster-1
conditions:
- lastTransitionTime: "2024-05-07T22:36:33Z"
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-07T22:36:33Z"
message: Detected the new changes on the resources and started the rollout process
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: RolloutStarted
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: Overridden
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: All of the works are synchronized to the latest
observedGeneration: 1
reason: AllWorkSynced
status: "True"
type: WorkSynchronized
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: All corresponding work objects are applied
observedGeneration: 1
reason: AllWorkHaveBeenApplied
status: "True"
type: Applied
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: All corresponding work objects are available
observedGeneration: 1
reason: AllWorkAreAvailable
status: "True"
type: Available
- conditions:
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: 'kind-cluster-2 is not selected: ClusterUnschedulable, cluster does not
match with any of the required cluster affinity terms'
observedGeneration: 1
reason: ScheduleFailed
status: "False"
type: Scheduled
selectedResources:
...
In de ClusterResourcePlacement
status wordt de status van de ClusterResourcePlacementScheduled
voorwaarde weergegeven als False
. Als u wilt weten waarom de planner de resource voor het opgegeven plaatsingsbeleid niet kan plannen, controleert u de ClusterSchedulingPolicySnapshot
specificatie en status. Zie Hoe kan ik de meest recente ClusterSchedulingPolicySnapshot voor een ClusterResourcePlacement-implementatie vinden en controleren voor meer informatie over het ophalen van de nieuwste ClusterSchedulingPolicySnapshot
versie?
Meest recente ClusterSchedulingPolicySnapshot
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterSchedulingPolicySnapshot
metadata:
annotations:
kubernetes-fleet.io/CRP-generation: "1"
kubernetes-fleet.io/number-of-clusters: "2"
creationTimestamp: "2024-05-07T22:36:33Z"
generation: 1
labels:
kubernetes-fleet.io/is-latest-snapshot: "true"
kubernetes-fleet.io/parent-CRP: crp-2
kubernetes-fleet.io/policy-index: "0"
name: crp-2-0
ownerReferences:
- apiVersion: placement.kubernetes-fleet.io/v1beta1
blockOwnerDeletion: true
controller: true
kind: ClusterResourcePlacement
name: crp-2
uid: 48bc1e92-a8b9-4450-a2d5-c6905df2cbf0
resourceVersion: "10090"
uid: 2137887e-45fd-4f52-bbb7-b96f39854625
spec:
policy:
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: prod
placementType: PickN
policyHash: ZjE0Yjk4YjYyMTVjY2U3NzQ1MTZkNWRhZjRiNjQ1NzQ4NjllNTUyMzZkODBkYzkyYmRkMGU3OTI3MWEwOTkyNQ==
status:
conditions:
- lastTransitionTime: "2024-05-07T22:36:33Z"
message: could not find all the clusters needed as specified by the scheduling
policy
observedGeneration: 1
reason: SchedulingPolicyUnfulfilled
status: "False"
type: Scheduled
observedCRPGeneration: 1
targetClusters:
- clusterName: kind-cluster-1
clusterScore:
affinityScore: 0
priorityScore: 0
reason: picked by scheduling policy
selected: true
- clusterName: kind-cluster-2
reason: ClusterUnschedulable, cluster does not match with any of the required
cluster affinity terms
selected: false
Oplossing
Als u dit probleem in dit scenario wilt oplossen, voegt u ook het env:prod
label toe aan de resource van het lidcluster kind-cluster-2
, zodat de planner het cluster kan selecteren om resources door te geven.
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.