Skip to content

Commit 0022ed1

Browse files
authored
Merge pull request kosmos-io#207 from duanmengkk/fix_pvc_create_error
cherry-pick manually[fix pvc create error]
2 parents 007f1e6 + fc6ab77 commit 0022ed1

File tree

3 files changed

+31
-5
lines changed

3 files changed

+31
-5
lines changed

deploy/scheduler/deployment.yaml

+2-3
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ spec:
2626
image: ghcr.io/kosmos-io/scheduler:0.0.2
2727
command:
2828
- scheduler
29-
- --leader-elect=true
30-
- --leader-elect-resource-name=kosmos-scheduler
31-
- --leader-elect-resource-namespace=kosmos-system
3229
- --config=/etc/kubernetes/kube-scheduler/scheduler-config.yaml
3330
resources:
3431
requests:
@@ -67,6 +64,8 @@ data:
6764
kind: KubeSchedulerConfiguration
6865
leaderElection:
6966
leaderElect: true
67+
resourceName: kosmos-scheduler
68+
resourceNamespace: kosmos-system
7069
profiles:
7170
- schedulerName: kosmos-scheduler
7271
plugins:

deploy/scheduler/rbac.yaml

-2
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ rules:
6262
- ''
6363
resources:
6464
- endpoints
65-
resourceNames:
66-
- kube-scheduler
6765
- verbs:
6866
- get
6967
- list

pkg/scheduler/lifted/plugins/knodevolumebinding/knode_volume_binding.go

+29
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ func (d *stateData) Clone() framework.StateData {
6969
type VolumeBinding struct {
7070
Binder scheduling.SchedulerVolumeBinder
7171
PVCLister corelisters.PersistentVolumeClaimLister
72+
NodeLister corelisters.NodeLister
7273
frameworkHandler framework.Handle
7374
}
7475

@@ -232,6 +233,15 @@ func (pl *VolumeBinding) Filter(_ context.Context, cs *framework.CycleState, pod
232233

233234
// Reserve reserves volumes of pod and saves binding status in cycle state.
234235
func (pl *VolumeBinding) Reserve(_ context.Context, cs *framework.CycleState, pod *corev1.Pod, nodeName string) *framework.Status {
236+
node, err := pl.NodeLister.Get(nodeName)
237+
if err == nil {
238+
return framework.NewStatus(framework.Error, "node not found")
239+
}
240+
241+
if helpers.HasKnodeTaint(node) {
242+
return nil
243+
}
244+
235245
state, err := getStateData(cs)
236246
if err != nil {
237247
return framework.AsStatus(err)
@@ -257,6 +267,15 @@ func (pl *VolumeBinding) Reserve(_ context.Context, cs *framework.CycleState, po
257267
// If binding errors, times out or gets undone, then an error will be returned to
258268
// retry scheduling.
259269
func (pl *VolumeBinding) PreBind(ctx context.Context, cs *framework.CycleState, pod *corev1.Pod, nodeName string) *framework.Status {
270+
node, err := pl.NodeLister.Get(nodeName)
271+
if err == nil {
272+
return framework.NewStatus(framework.Error, "node not found")
273+
}
274+
275+
if helpers.HasKnodeTaint(node) {
276+
return nil
277+
}
278+
260279
s, err := getStateData(cs)
261280
if err != nil {
262281
return framework.AsStatus(err)
@@ -283,6 +302,15 @@ func (pl *VolumeBinding) PreBind(ctx context.Context, cs *framework.CycleState,
283302
// Unreserve clears assumed PV and PVC cache.
284303
// It's idempotent, and does nothing if no cache found for the given pod.
285304
func (pl *VolumeBinding) Unreserve(_ context.Context, cs *framework.CycleState, _ *corev1.Pod, nodeName string) {
305+
node, err := pl.NodeLister.Get(nodeName)
306+
if err != nil {
307+
return
308+
}
309+
310+
if helpers.HasKnodeTaint(node) {
311+
return
312+
}
313+
286314
s, err := getStateData(cs)
287315
if err != nil {
288316
return
@@ -317,6 +345,7 @@ func New(plArgs runtime.Object, fh framework.Handle) (framework.Plugin, error) {
317345
return &VolumeBinding{
318346
Binder: binder,
319347
PVCLister: pvcInformer.Lister(),
348+
NodeLister: nodeInformer.Lister(),
320349
frameworkHandler: fh,
321350
}, nil
322351
}

0 commit comments

Comments
 (0)