廊坊制作网站模板建站公司,wordpress 仪表盘修改,网络域名后缀有哪些,宁晋县建设局网站在Kubernetes#xff08;k8s#xff09;中#xff0c;当节点资源面临压力时#xff0c;如何决定Pod的优先级是一个关键问题。在Kubernetes 1.8版本之后#xff0c;引入了基于Pod优先级的调度策略#xff0c;即Pod Priority Preemption。这种策略允许在资源不足的情况下k8s中当节点资源面临压力时如何决定Pod的优先级是一个关键问题。在Kubernetes 1.8版本之后引入了基于Pod优先级的调度策略即Pod Priority Preemption。这种策略允许在资源不足的情况下系统可以选择性释放一些优先级较低的Pod以确保最重要的Pod能够获取足够的资源并稳定运行。
Pod的优先级是由用户设置的并且可以通过权重来区分不同的优先级。权重是区分优先级的关键因素Kubernetes将Pod分成了三个QoS服务质量等级分别是
Guaranteed优先级最高通常用于数据库应用或一些重要的业务应用。这些Pod只有在资源超出其限制或节点内存压力非常大且没有其他更低QoS的Pod时才会被杀死。Burstable这种类型的Pod可以使用的资源超过其请求的资源上限由limit指定但优先级相对较低通常用于一般性应用或批处理任务。Best Effort优先级最低集群不知道Pod的资源请求情况调度时不考虑资源通常用于一些临时性的不重要应用。
当节点资源不足时Kubernetes的调度器会尝试驱逐一些优先级较低的Pod以释放资源供新的或更重要的Pod使用。这种驱逐行为称为Eviction。而在调度新Pod时如果资源不足调度器会尝试抢占一些优先级较低的Pod来满足新Pod的需求这称为Preemption。
需要注意的是高优先级的Pod并不保证始终被调度到特定节点上。如果在驱逐低优先级Pod的过程中出现了更高优先级的Pod调度器会重新调度这些Pod。此外优先级抢占的调度方式可能会导致调度陷入“死循环”状态这通常需要通过多个Scheduler协作来避免。
总之在Kubernetes中通过合理的设置Pod的优先级和QoS等级可以在节点资源面临压力时实现更智能的资源管理和调度从而确保关键业务的稳定运行。 真实案例
参考订单号 PT-20240115002[EU PRD]节点Calico pod因内存压力会被优先重启
http://hds.ms-sit.xxxxxx.net/orderOperation/planTaskView/vendor/249
通过k8s原理来看在节点出现资源紧张的情况下会对该节点的pod做驱逐排名而resources设置了1:1相比于设置了1:n的排名会更后所以就出现了calico-node等pod被优先驱逐的情况。 节点内存压力问题的出现从之前的排查来看可能跟低版本的DCE有关也有可能是节点产生了较多的cache占用了较多的内存我们的建议是重启节点之前同样问题的节点重启后暂时没出现过如果不能重启节点我们的建议是对节点进行扩容暂时不建议将平台组件的资源用量也调整为1:1因为这个过程需要滚动重启所有ds相关的pod 调整方案初步确定为将calico node的memory request从200M改为与limit一致的400M并且滚动升级策略改为onDelete。 onDelete 参数的含义
在 Kubernetesk8s中滚动升级Rolling Update是一种常见的部署策略用于逐步替换集群中的旧版本 Pod以新版本 Pod 替代它们。在滚动升级过程中旧的 Pod 会被逐个删除而新的 Pod 会被逐个创建以确保应用程序始终有可用实例。
然而在某些情况下您可能希望更精细地控制滚动升级的过程。onDelete 升级策略允许您手动触发 Pod 的替换过程。当您设置滚动升级策略为 onDelete 时新的 Replicaset代表新版本 Pod 的集合不会自动替换旧的 Replicaset代表旧版本 Pod 的集合。相反您需要手动删除旧的 Replicaset以便 Kubernetes 开始创建新版本 Pod。
将滚动升级策略改为 onDelete 的目的可能包括
精确控制升级过程onDelete 策略允许您精确地控制何时开始和结束升级过程。这对于需要精细调整升级时间窗口或避免在特定时间段内执行升级的场景非常有用。避免意外的中断在某些情况下自动滚动升级可能会导致意外的中断或问题。通过将升级策略设置为 onDelete您可以确保在升级过程中有更多的控制和可见性从而避免这些问题。与其他系统或流程集成在某些场景中您可能希望将 Kubernetes 的滚动升级与其他系统或流程集成。通过将升级策略设置为 onDelete您可以更轻松地触发升级过程并将其与其他自动化工具或流程相结合。
请注意使用 onDelete 策略需要您手动管理升级过程确保在删除旧的 Replicaset 之前备份重要数据并在升级过程中密切监视应用程序的状态。否则可能会导致应用程序中断或数据丢失。