Resursspridningsfel: ClusterResourcePlacementScheduled är falskt
Den här artikeln beskriver hur du felsöker ClusterResourcePlacementScheduled
problem när du sprider resurser med API-objektet ClusterResourcePlacement
i Azure Kubernetes Fleet Manager.
Symptom
När du använder ClusterResourcePlacement
API-objektet i Azure Kubernetes Fleet Manager för att sprida resurser kan schemaläggaren för Fleet-arbetsbelastningar inte hitta alla nödvändiga kluster som anges av schemaläggningsprincipen, och villkorsstatusen ClusterResourcePlacementScheduled
visas som False
.
Kommentar
Om du vill ha mer information om varför schemaläggningen misslyckas kan du kontrollera schemaläggningsloggarna .
Orsak
Det här problemet kan inträffa av någon av följande orsaker:
- Placeringsprincipen är inställd på
PickFixed
, men de angivna klusternamnen matchar inte något anslutet medlemsklusternamn i flottan, eller så är det angivna klustret inte längre anslutet till flottan. - Placeringsprincipen är inställd på , och N-kluster anges, men färre än N-kluster har anslutit sig till
PickN
flottan eller uppfyllt placeringsprincipen. - Resursväljaren
ClusterResourcePlacement
väljer ett reserverat namnområde.
Kommentar
När placeringsprincipen är inställd på PickAll
är villkoret ClusterResourcePlacementScheduled
inställt på True
.
Fallstudie
I följande exempel ClusterResourcePlacement
försöker principen med en PickN
placering att sprida resurser till två kluster med etiketten env:prod
. De två klustren, med namnet kind-cluster-1
och kind-cluster-2
, har anslutit sig till flottan. Men bara ett medlemskluster, kind-cluster-1
, har etiketten env:prod
.
ClusterResourcePlacement-specifikation
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:
...
I statusen ClusterResourcePlacement
visas villkorsstatusen ClusterResourcePlacementScheduled
som False
. Om du vill ta reda på varför schemaläggaren inte kan schemalägga resursen för den angivna placeringsprincipen kontrollerar du specifikationen och statusen ClusterSchedulingPolicySnapshot
. Information om hur du hämtar den senaste ClusterSchedulingPolicySnapshot
finns i Hur hittar jag och verifierar den senaste ClusterSchedulingPolicySnapshot för en ClusterResourcePlacement-distribution?
Senaste 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
Åtgärd
I det här scenariot kan du lösa det här problemet genom att lägga till env:prod
etiketten i medlemsklusterresursen också, kind-cluster-2
så att schemaläggaren kan välja det kluster som ska sprida resurser.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.