Menu Close

Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

24.8. 场景示例

一个 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

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

如果要启用驱除,以便在节点发现可用内存不足 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 放置到节点上,并立即降低内存压力并触发驱除。此配置假定这些容器集使用的使用量少于其配置的请求。