Menu Close

Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

24.6. 了解 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 服务质量的每个容器的 a 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 终止,节点可以根据节点重启策略重启容器。