This repository was archived by the owner on Jan 29, 2025. It is now read-only.
-
Couldn't load subscription status.
- Fork 45
This repository was archived by the owner on Jan 29, 2025. It is now read-only.
Working with descheduler #90
Copy link
Copy link
Open
Description
Hi there,
I'm using the descheduler to rescedule a pod to another node. However, the descheduler complaints that every node has insufficient resource "telemetry/scheduling", which prevent the pod being rescheduled.
(I've checked the source code of the descheduler, and it only evicts pods that don't fit the current node and fit some other nodes, see the code below from node_affinity.go)
pods, err := podutil.ListPodsOnANode(
node.Name,
getPodsAssignedToNode,
podutil.WrapFilterFuncs(podFilter, func(pod *v1.Pod) bool {
return evictorFilter.Filter(pod) &&
!nodeutil.PodFitsCurrentNode(getPodsAssignedToNode, pod, node) &&
nodeutil.PodFitsAnyNode(getPodsAssignedToNode, pod, nodes)
}),
)
if err != nil {
klog.ErrorS(err, "Failed to get pods", "node", klog.KObj(node))
}
for _, pod := range pods {
if pod.Spec.Affinity != nil && pod.Spec.Affinity.NodeAffinity != nil && pod.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution != nil {
klog.V(1).InfoS("Evicting pod", "pod", klog.KObj(pod))
if _, err := podEvictor.EvictPod(ctx, pod, node, "NodeAffinity"); err != nil {
klog.ErrorS(err, "Error evicting pod")
break
}
}
}
I'm using the setting up of health-metric-demo. The logs of the descheduler are like:
I0628 14:32:11.838531 72888 node_affinity.go:78] "Processing node" node="minikube-m02"
I0628 14:32:11.838554 72888 node.go:183] "Pod does not fit on node" pod="default/demo-app-77fbd8745b-hhsxl" node="minikube-m02"
I0628 14:32:11.838557 72888 node.go:185] "insufficient telemetry/scheduling"
I0628 14:32:11.838568 72888 node.go:166] "Pod does not fit on node" pod="default/demo-app-77fbd8745b-hhsxl" node="minikube"
I0628 14:32:11.838571 72888 node.go:168] "insufficient telemetry/scheduling"
I0628 14:32:11.838579 72888 node.go:166] "Pod does not fit on node" pod="default/demo-app-77fbd8745b-hhsxl" node="minikube-m02"
I0628 14:32:11.838582 72888 node.go:168] "insufficient telemetry/scheduling"
I0628 14:32:11.838591 72888 node.go:166] "Pod does not fit on node" pod="default/demo-app-77fbd8745b-hhsxl" node="minikube-m03"
I0628 14:32:11.838619 72888 node.go:168] "pod node selector does not match the node label"
I0628 14:32:11.838624 72888 node.go:168] "insufficient telemetry/scheduling"
I0628 14:32:11.839395 72888 descheduler.go:312] "Number of evicted pods" totalEvicted=0
In your instructions for the health-demo, the pod simply re-scheduled to another node, so I'm wondering how do you work around this problem?
Many thanks!
criscola
Metadata
Metadata
Assignees
Labels
No labels