文档首页> 云容器引擎 CCE> 常见问题> 工作负载> 调度策略> 如何设置一个节点上的某个容器不能被驱逐?
更新时间:2022-05-06 GMT+08:00
分享

如何设置一个节点上的某个容器不能被驱逐?

问题背景

客户反馈CCE集群中一个节点上的两个容器之间互相争资源,导致kubelet将其全部驱逐。询问能不能设定策略让其中一个服务一直保留?如何设定?

问题建议

Kubelet会按照下面的标准对Pod的驱逐行为进行评判:

  • 根据服务质量:即BestEffort、Burstable、Guaranteed。
  • 根据Pod调度请求的被耗尽资源的消耗量。

接下来,Pod按照下面的顺序进行驱逐(QOS):

BestEffort -> Burstable -> Guaranteed

  • Best-Effort类型的pods:系统用完了全部内存时,该类型pods会最先被kill掉。
  • Burstable类型的pods:系统用完了全部内存,且没有Best-Effort container可以被kill时,该类型pods会被kill掉。
  • Guaranteed类型的pods:系统用完了全部内存、且没有Burstable与Best-Effort container可以被kill,该类型的pods会被kill掉。

您可以在工作负载yaml中添加QoSClass字段设置被驱逐优先级,如下图:

  • 如果pod进程因使用超过预先设定的limites而非Node资源紧张情况,系统倾向于在其原所在的机器上重启该container或本机或其他重新创建一个pod。
  • 如果资源充足,可将QoS pods类型均设置为Guaranteed。用计算资源换业务性能和稳定性,减少排查问题时间和成本。
  • 如果想更好的提高资源利用率,业务服务可以设置为Guaranteed,而其他服务根据重要程度可分别设置为Burstable或Best-Effort,例如filebeat。
分享:

调度策略 所有常见问题

more

关闭导读