Kubernetes 在不重新启动Pod的情况下更改Pod优先级?

Kubernetes 在不重新启动Pod的情况下更改Pod优先级?,kubernetes,controller,scheduler,Kubernetes,Controller,Scheduler,我试图使用“patch”命令更改现有Kubernetes吊舱的优先级,但它返回错误,表示这不是可以修改的字段之一。我可以在部署规范中修补优先级,但这会导致重新创建Pod(按照定义的更新策略) 基本思想是实现一种概念上类似于nice级别的机制(对于我的应用程序),这样某些POD可以根据特定条件(由我的控制器)取消优先级,并在资源拥塞时由默认调度程序抢占。但我不希望在没有拥塞的情况下重启它们 是否有办法解决此问题,或者调度器的工作方式中固有的某种东西会阻止类似的事情正常工作?优先级值将基于在调度po

我试图使用“patch”命令更改现有Kubernetes吊舱的优先级,但它返回错误,表示这不是可以修改的字段之一。我可以在部署规范中修补优先级,但这会导致重新创建Pod(按照定义的更新策略)

基本思想是实现一种概念上类似于nice级别的机制(对于我的应用程序),这样某些POD可以根据特定条件(由我的控制器)取消优先级,并在资源拥塞时由默认调度程序抢占。但我不希望在没有拥塞的情况下重启它们


是否有办法解决此问题,或者调度器的工作方式中固有的某种东西会阻止类似的事情正常工作?

优先级值将基于在调度pod时分配给其部署的PriorityClass的优先级值应用于pod。对PriorityClass所做的任何更改都不会应用于已计划的pod,因此您必须重新部署pod以使优先级生效。

据我所知

Pod优先级将在Pod被安排时生效

  • 首先,您需要创建
    priorityclass

  • 使用
    priorityClassName
    创建Pod,并在Pod定义中提及
    priorityClassName

  • 如果你试图给已经安排好的pod添加优先级,我将不工作


    供参考:

    这对您的情况有帮助吗@mattew这是我希望使用的机制,但我无法更改(修补)正在运行的pod的优先级。最近我做了类似的事情,我基于默认值创建了一个新的调度程序,这个新的调度程序检查pod的“nice”标签,并基于“nice”抢占pod“POD优先级相等时的值。pod的标签可以在不重新启动pod的情况下更新。