Échec de propagation des ressources : ClusterResourcePlacementScheduled a la valeur false
Cet article explique comment résoudre les ClusterResourcePlacementScheduled
problèmes liés à la propagation des ressources à l’aide de l’objet ClusterResourcePlacement
API dans Azure Kubernetes Fleet Manager.
Symptômes
Lorsque vous utilisez l’objet ClusterResourcePlacement
API dans Azure Kubernetes Fleet Manager pour propager des ressources, le planificateur pour les charges de travail Fleet ne peut pas trouver tous les clusters requis spécifiés par la stratégie de planification, et l’état de la ClusterResourcePlacementScheduled
condition s’affiche comme False
suit .
Note
Pour obtenir plus d’informations sur la raison pour laquelle la planification échoue, vous pouvez vérifier les journaux du planificateur .
Cause
Ce problème peut se produire pour l’une des raisons suivantes :
- La stratégie de placement est définie
PickFixed
sur , mais les noms de cluster spécifiés ne correspondent à aucun nom de cluster membre joint dans la flotte, ou le cluster spécifié n’est plus connecté à la flotte. - La stratégie de placement est définie
PickN
sur , et les clusters N sont spécifiés, mais moins de clusters N ont rejoint la flotte ou satisfait de la stratégie de placement. - Le
ClusterResourcePlacement
sélecteur de ressources sélectionne un espace de noms réservé.
Note
Lorsque la stratégie de placement est définie PickAll
sur , la ClusterResourcePlacementScheduled
condition est définie sur True
.
Étude de cas
Dans l’exemple suivant, l’utilisation ClusterResourcePlacement
d’une PickN
stratégie de placement tente de propager des ressources à deux clusters étiquetés env:prod
. Les deux clusters, nommés kind-cluster-1
et kind-cluster-2
, ont rejoint la flotte. Toutefois, un seul cluster membre, kind-cluster-1
a l’étiquette env:prod
.
Spécification ClusterResourcePlacement
spec:
policy:
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: prod
numberOfClusters: 2
placementType: PickN
resourceSelectors:
...
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
État de ClusterResourcePlacement
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:
...
Dans l’état, l’état ClusterResourcePlacement
de la ClusterResourcePlacementScheduled
condition s’affiche sous la forme False
. Pour déterminer pourquoi le planificateur ne peut pas planifier la ressource pour la stratégie de placement spécifiée, vérifiez la spécification et l’état ClusterSchedulingPolicySnapshot
. Pour savoir comment obtenir la dernière version ClusterSchedulingPolicySnapshot
, consultez Comment puis-je trouver et vérifier la dernière version de ClusterSchedulingPolicySnapshot pour un déploiement ClusterResourcePlacement ?
Dernière version de 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
Résolution
Dans ce scénario, pour résoudre ce problème, ajoutez également l’étiquette env:prod
à la ressource kind-cluster-2
de cluster membre pour que le planificateur puisse également sélectionner le cluster pour propager les ressources.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.