0

我需要将应用程序/部署限制为仅在特定 cpus 上运行(例如 0-3 或仅 1 或 2 等)。我发现了 CPU Manager 并尝试使用static策略实现它,但无法实现我想要的。

到目前为止,我尝试了以下方法:

  1. 在 kubelet 上启用 cpu managerstatic策略并验证它是否已启用
  2. --reserved-cpus=0-3在 kubelet 中保留带有选项的 cpu
  3. 运行一个示例 nginx 部署,其限制等于请求和整数值的 cpu,即保证的 QoS 得到保证,并且能够验证 cpu 亲和性taskset -c -p $(pidof nginx)

因此,这使我的 nginx 应用程序被限制在保留 cpus (0-3) 以外的所有 cpus 上运行,即如果我的机器有 32 个 cpus,则该应用程序可以在 4-31 个 cpus 上运行。任何其他将运行的应用程序/部署也可以。据我了解,保留的 cpus 0-3 将保留给系统守护进程、操作系统守护进程等。

我的问题-

  1. 使用 Kubernetes CPU 管理器功能,是否可以将某些 cpu 固定到应用程序/pod(在本例中为我的 nginx 应用程序)以仅在特定 cpu 上运行(例如 2 或 3 或 4-5)?如果是,如何?
  2. 如果点 1 是可能的,我们是否也可以在容器级别执行固定,即说 Pod A 有两个容器 Container B 和 Container D。是否可以将 cpu 0-3 固定到 Container B 并将 cpu 4 固定到 Container B?
  3. 如果使用 Kubernetes CPU 管理器都无法实现这一切,那么目前有哪些可用的替代方案(如果有的话)?
4

1 回答 1

0

据我了解您的问题,您想为每个应用程序/pod 设置专用的 CPU 数量。正如我搜索过的那样。

我只能找到一些可能有帮助的文档。另一个是 Github 主题,我认为这是解决您问题的方法。

这是一个免责声明,根据我所阅读、搜索和理解的内容,这个问题没有直接的解决方案,只有解决方法。我仍在进一步寻找这个。

于 2022-02-24T05:57:21.990 回答