Fehler bei der Ressourcenverteilung: "ClusterResourcePlacementScheduled" ist "false".
In diesem Artikel wird beschrieben, wie Sie Probleme beheben ClusterResourcePlacementScheduled
, 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 zum Verteilen von Ressourcen verwenden, kann der Scheduler für Flottenworkloads nicht alle erforderlichen Cluster finden, die durch die Planungsrichtlinie angegeben sind, und der ClusterResourcePlacementScheduled
Bedingungsstatus wird als False
angezeigt.
Notiz
Um weitere Informationen darüber zu erhalten, warum die Planung fehlschlägt, können Sie die Planungsprotokolle überprüfen.
Ursache
Dieses Problem kann aus einem der folgenden Gründe auftreten:
- Die Platzierungsrichtlinie ist auf
PickFixed
festgelegt, aber die angegebenen Clusternamen stimmen nicht mit einem Mitgliedclusternamen in der Flotte überein, oder der angegebene Cluster ist nicht mehr mit der Flotte verbunden. - Die Platzierungsrichtlinie wird festgelegt
PickN
, und N-Cluster werden angegeben, aber weniger als N-Cluster sind der Flotte beigetreten oder erfüllt die Platzierungsrichtlinie. - Die
ClusterResourcePlacement
Ressourcenauswahl wählt einen reservierten Namespace aus.
Notiz
Wenn die Platzierungsrichtlinie auf PickAll
festgelegt ist, wird die ClusterResourcePlacementScheduled
Bedingung auf . True
festgelegt.
Fallstudie
Im folgenden Beispiel versucht die ClusterResourcePlacement
Mit einer PickN
Platzierungsrichtlinie, Ressourcen an zwei clusterbeschriftete env:prod
Cluster zu verteilen. Die beiden Cluster, benannt kind-cluster-1
und kind-cluster-2
, haben der Flotte beigetreten. Allerdings hat nur ein Membercluster kind-cluster-1
die Bezeichnung env:prod
.
ClusterResourcePlacement-Spezifikation
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:
...
ClusterResourcePlacement
Im Status wird der ClusterResourcePlacementScheduled
Bedingungsstatus als False
. Um herauszufinden, warum der Planer die Ressource für die angegebene Platzierungsrichtlinie nicht planen kann, überprüfen Sie die Spezifikation und den ClusterSchedulingPolicySnapshot
Status. Informationen zum Abrufen der neuesten ClusterSchedulingPolicySnapshot
Informationen finden Sie unter Wie kann ich das neueste ClusterSchedulingPolicySnapshot für eine ClusterResourcePlacement-Bereitstellung finden und überprüfen?
Neueste 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
Lösung
Um dieses Problem zu beheben, fügen Sie die env:prod
Bezeichnung auch der Memberclusterressource hinzu kind-cluster-2
, damit der Planer den Cluster auswählen kann, um Ressourcen zu verteilen.
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.