Error de propagación de recursos: ClusterResourcePlacementScheduled es false
En este artículo se describe cómo solucionar problemas ClusterResourcePlacementScheduled
al propagar recursos mediante el ClusterResourcePlacement
objeto de API en Azure Kubernetes Fleet Manager.
Síntomas
Cuando se usa el ClusterResourcePlacement
objeto de API en Azure Kubernetes Fleet Manager para propagar recursos, el programador de cargas de trabajo fleet no puede encontrar todos los clústeres necesarios especificados por la directiva de programación y el ClusterResourcePlacementScheduled
estado de la condición se muestra como False
.
Nota:
Para obtener más información sobre por qué se produce un error en la programación, puede comprobar los registros del programador .
Causa
Este problema puede producirse por uno de los siguientes motivos:
- La directiva de selección de ubicación se establece
PickFixed
en , pero los nombres de clúster especificados no coinciden con ningún nombre de clúster miembro unido en la flota o el clúster especificado ya no está conectado a la flota. - La directiva de selección de ubicación se establece
PickN
en y se especifican N clústeres, pero menos de N clústeres se han unido a la flota o han cumplido la directiva de selección de ubicación. - El
ClusterResourcePlacement
selector de recursos selecciona un espacio de nombres reservado.
Nota:
Cuando la directiva de selección de ubicación se establece PickAll
en , la ClusterResourcePlacementScheduled
condición se establece en True
.
Caso práctico
En el ejemplo siguiente, con ClusterResourcePlacement
una PickN
directiva de selección de ubicación está intentando propagar recursos a dos clústeres etiquetados env:prod
como . Los dos clústeres, denominados kind-cluster-1
y kind-cluster-2
, se han unido a la flota. Sin embargo, solo un clúster miembro, kind-cluster-1
, tiene la etiqueta env:prod
.
Especificación ClusterResourcePlacement
spec:
policy:
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: prod
numberOfClusters: 2
placementType: PickN
resourceSelectors:
...
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
Estado 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:
...
En el ClusterResourcePlacement
estado , el estado de la ClusterResourcePlacementScheduled
condición se muestra como False
. Para averiguar por qué el programador no puede programar el recurso para la directiva de selección de ubicación especificada, compruebe la especificación y el ClusterSchedulingPolicySnapshot
estado. Para obtener información sobre cómo obtener la versión más reciente, consulte ¿Cómo puedo encontrar y comprobar la versión más reciente ClusterSchedulingPolicySnapshot
de ClusterSchedulingPolicySnapshot para una implementación de ClusterResourcePlacement?
ClusterSchedulingPolicySnapshot más reciente
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
Solución
En este escenario, para resolver este problema, agregue también la env:prod
etiqueta al recurso de clúster miembro para kind-cluster-2
que el programador pueda seleccionar el clúster para propagar los recursos.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.