Kubernetes版本1.17.4
尝试自定义调度程序优先级,我传递了--policy-config-file
指向具有以下内容的文件:
kind: Policy
apiVersion: v1
predicates:
- name: CheckNodeUnschedulable
- name: GeneralPredicates
- name: PodFitsResources
- name: PodToleratesNodeTaints
- name: CheckVolumeBinding
- name: MaxEBSVolumeCount
- name: MatchInterPodAffinity
- name: NoDiskConflict
- name: NoVolumeZoneConflict
- name: MatchNodeSelector
- name: HostName
priorities:
- {name: BalancedResourceAllocation, weight: 1}
- {name: LeastRequestedPriority, weight: 1}
- {name: ServiceSpreadingPriority, weight: 1}
- {name: NodePreferAvoidPodsPriority, weight: 1}
- {name: NodeAffinityPriority, weight: 1}
- {name: TaintTolerationPriority, weight: 1}
- {name: ImageLocalityPriority, weight: 1}
- {name: SelectorSpreadPriority, weight: 1}
- {name: InterPodAffinityPriority, weight: 1}
我认为,这是默认的谓词和策略集,但是kubernetes调度程序无法启动并出现以下错误:
F0417 12:35:52.291434 1 factory.go:265] error initializing the scheduling framework: plugin "NodeName" already registered as "FilterPlugin"
在我的配置文件中的任何地方都没有提到
NodeName
。我究竟做错了什么?
最佳答案
在此link中,您可以看到已弃用--policy-config-file
参数,不建议使用。
Here,您可以看到GeneralPredicates
和HostName
使用相同的nodename
插件:
NodeName谓词:
registry.RegisterPredicate(predicates.GeneralPred,
...
plugins.Filter = appendToPluginSet(plugins.Filter, nodename.Name, nil)
...
主机名谓词:
registry.RegisterPredicate(predicates.HostNamePred,
...
plugins.Filter = appendToPluginSet(plugins.Filter, nodename.Name, nil)
...
因此,您可以尝试禁用其中之一,并查看错误是否仍然存在。
这应该可以解决
nodename
插件的问题,但是如果检测到其他冲突,则可以尝试以相同的方式解决。
关于kubernetes - Kubernetes Scheduler策略配置导致看似无关的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61372088/