Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

24.6. 了解 Pod 驱除

如果达到驱除阈值并且传递宽限期,节点会启动驱除 pod 过程,直到信号低于定义的阈值。

节点通过其 服务质量 对 pod 进行驱除。在具有相同服务质量的 pod 中,节点会相对于 pod 的调度请求,消耗计算资源的消耗来扩展 pod。

每个服务质量级别都有内存不足分数。Linux 内存不足工具(OOM 终止程序)使用分数来确定要结束的 pod。如需更多信息,请参阅了解服务质量和内存不足 Killer

下表列出了每个服务质量级别,以及内存分数的相关等级。

表 24.2. 服务级别质量

服务质量描述

Guaranteed

相对于请求消耗最多的资源的 Pod 首先失败。如果没有 pod 超过其请求,策略会以资源的最大使用者为目标。

Burstable

相对于该资源请求的请求,消耗最多的资源的 Pod 会首先失败。如果没有 pod 超过其请求,策略会以资源的最大使用者为目标。

BestEffort

消耗最多资源数量的 Pod 首先失败。

除非系统守护进程(如节点或容器引擎)消耗资源,或保证服务质量 pod 不会因为其他 pod 消耗而被驱除,超过使用 system-reserved 分配的资源消耗的资源,或者节点仅保证服务质量 pod 的剩余质量。

如果节点仅保证剩余的服务质量 pod,节点会驱除影响节点稳定性的 pod,并将意外消耗的影响限制到其他保证的服务 pod。

本地磁盘是服务资源的最优质量。如果需要,节点会一次驱除 pod,以便在遇到磁盘压力时回收磁盘空间。节点根据服务质量对 pod 进行排序。如果节点正在响应缺少可用内节点,则节点会首先驱除具有最低服务质量的 pod,从而回收内节点。如果节点正在响应缺少可用磁盘,则该节点会将 pod 在服务质量中排入使用最多的本地磁盘,然后首先驱除这些 pod。

24.6.1. 了解服务质量和内存不足 Killer

如果节点在能够重新声明内存前出现系统内存不足(OOM)事件,则该节点会依赖于 OOM 终止程序来响应。

节点根据 pod 的服务质量,为每个容器设置一个 oom_score_adj 值。

表 24.3. 服务级别质量

服务质量oom_score_adj

Guaranteed

-998

Burstable

min(max(2, 1000 - (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999)

BestEffort

1000

如果节点在节点遇到系统 OOM 事件前无法重新声明内存,则 OOM 终止程序进程会计算 OOM 分数:

% of node memory a container is using + oom_score_adj = oom_score

然后,节点将以最高分数结束容器。

首先,具有最低服务质量的容器,可以消耗最大数量的内存(相对于调度请求)。

与 pod 驱除不同,如果 pod 容器因为 OOM 终止,节点可以根据节点重启策略重启容器。