Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

24.8. Scenario 示例

一个 Operator:

  • 具有内存容量为 10Gi 的节点。
  • 希望为系统守护进程(如内核、节点和其他守护进程)保留 10% 内存容量。
  • 希望以 95% 内存利用率驱除 pod,以减少系统的 OOM 出现和推移。

此配置中隐式理解 system-reserved 应该包括驱除阈值所涵盖的内存量。

要达到这个容量,一些 pod 都使用它的请求,或者系统正在使用 1Gi。

如果节点有 10 Gi 容量,且您想要为系统守护进程保留 system-reserved 设置的 10%,请执行以下计算:

capacity = 10 Gi
system-reserved = 10 Gi * .1 = 1 Gi

可分配的资源量成为:

allocatable = capacity - system-reserved = 9 Gi

这意味着调度程序将调度为该节点请求 9 Gi 内存的 pod。

如果要启用驱除,以便在节点发现可用内存低于 10% 30 秒时,或低于 5% 容量时立即触发驱除,您需要调度程序将可分配内存评估为 8Gi。因此,请确定您的系统保留涵盖了您的驱除阈值。

capacity = 10 Gi
eviction-threshold = 10 Gi * .1 = 1 Gi
system-reserved = (10Gi * .1) + eviction-threshold = 2 Gi
allocatable = capacity - system-reserved = 8 Gi

将以下内容添加到适当的节点 配置映射

kubeletArguments:
  system-reserved:
  - "memory=2Gi"
  eviction-hard:
  - "memory.available<.5Gi"
  eviction-soft:
  - "memory.available<1Gi"
  eviction-soft-grace-period:
  - "memory.available=30s"

此配置可确保调度程序不会将 pod 放置到节点上,并立即引发内存压力并触发驱除。此配置假定这些 pod 使用小于配置的请求。