优先级导致不公平,抢占是强盗行为,受害者莫名奇妙。此特性增加系统复杂性并带来额外不稳定因素。如果资源紧张,首先应该扩容,硬件很便宜,应该禁用优先级特性。
Pod优先级指明pod的相对重要程度。在1.9之前的版本中,如果pod因为资源问题无法调度,则kubernetes尝试抢占低优先级pod资源,将它们排挤掉,为高优先级pod提供运行条件。
在1.9及之后的版本中,pod优先级会影响pod的调度顺序及当节点资源不足时的排斥顺序。即调度时优先部署高优先级pod,当节点资源不足时先行排挤低优先级pod。
在1.11之前的版本中,pod优先级是alpha特性,在1.11版本中变成beta特性,并保证在后续版本继续支持。alpha版本中默认禁止,需要明确打开,beta版本默认打开,关系如下表:
Kubernetes Version | Priority and Preemption State | Enabled by default |
---|---|---|
1.8 | alpha | no |
1.9 | alpha | no |
1.10 | alpha | no |
1.11 | beta | yes |
警告: 集群中恶意用户可能会创建尽可能高优先级pod,从而导致普通pod被排挤或者无法调度。系统管理员可以将资源配额与pod优先级结合,限制用户创建高优先级pod、或者对用处创建的高优先级pod能够使用的资源数量,从而阻止他们抢占太多的集群资源,此功能目前是1.11中的alpha我。