Skip to content

Commit 61ef26a

Browse files
committed
fix:instance rescheduler fail by volumeBindingNodeConflict in one2one mode
Signed-off-by: qiuming520 <[email protected]>
1 parent eee9f43 commit 61ef26a

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

pkg/clustertree/cluster-manager/utils/leaf_model_handler.go

+5
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ func (h ClassificationHandler) CreateRootNode(ctx context.Context, listenPort in
244244
if h.leafMode == ALL {
245245
nodeNameInRoot := fmt.Sprintf("%s%s", utils.KosmosNodePrefix, cluster.Name)
246246
nodeInRoot, err := createNode(ctx, h.RootClientset, cluster.Name, nodeNameInRoot, gitVersion, listenPort)
247+
nodeInRoot.Annotations[nodeMode] = "one2cluster"
247248
if err != nil {
248249
return nil, nil, err
249250
}
@@ -265,6 +266,10 @@ func (h ClassificationHandler) CreateRootNode(ctx context.Context, listenPort in
265266
if err != nil {
266267
return nil, nil, err
267268
}
269+
if h.leafMode == Party {
270+
nodeInRoot.Annotations[nodeMode] = "one2party"
271+
}
272+
268273
nodes = append(nodes, nodeInRoot)
269274
leafNodeSelectors[nodeNameInRoot] = leafModel.NodeSelector
270275
}

pkg/clustertree/cluster-manager/utils/leaf_resource_manager.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ var (
2424
type LeafMode int
2525

2626
const (
27-
ALL LeafMode = iota
27+
nodeMode = "leafNodeMode"
28+
ALL LeafMode = iota
2829
Node
2930
Party
3031
)

pkg/scheduler/lifted/plugins/leafnodevolumebinding/leafnode_volume_binding.go

+12-4
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import (
4242

4343
const (
4444
stateKey framework.StateKey = Name
45+
nodeMode = "leafNodeMode"
4546
)
4647

4748
// the state is initialized in PreFilter phase. because we save the pointer in
@@ -197,15 +198,22 @@ func (pl *VolumeBinding) Filter(_ context.Context, cs *framework.CycleState, pod
197198
return framework.NewStatus(framework.Error, "node not found")
198199
}
199200

200-
if helpers.HasLeafNodeTaint(node) {
201-
return nil
202-
}
203-
204201
state, err := getStateData(cs)
205202
if err != nil {
206203
return framework.AsStatus(err)
207204
}
208205

206+
if helpers.HasLeafNodeTaint(node) {
207+
if cluster, ok := node.Annotations[nodeMode]; ok && cluster == "one2cluster" {
208+
klog.V(5).InfoS("This is one2cluster ", "pod", klog.KObj(pod), "node", klog.KObj(node))
209+
return nil
210+
} else {
211+
if len(state.boundClaims) <= 0 {
212+
return nil
213+
}
214+
}
215+
}
216+
209217
if state.skip {
210218
return nil
211219
}

0 commit comments

Comments
 (0)