异构集群中的 Kubernetes cpu 请求/限制

Nox*_*yle 6 cpu cluster-computing request heterogeneous kubernetes

Kubernetes 允许为 POD指定 CPU限制和/或请求

CPU 资源的限制和请求以 CPU 为单位进行衡量。在 Kubernetes 中,一个 cpu 相当于:

1 AWS vCPU
1 GCP Core
1 Azure vCore
1 IBM vCPU
1 Hyperthread on a bare-metal Intel processor with Hyperthreading
Run Code Online (Sandbox Code Playgroud)

不幸的是,当使用异构集群(例如使用不同处理器)时,cpu 限制/请求取决于分配 POD 的节点;特别是对于实时应用。

如果我们假设:

  • 我们可以为集群的每种硬件计算 POD 的微调 CPU 限制
  • 我们想让 Kubernetes 调度器在整个集群中选择一个匹配的节点

有没有办法启动 POD,以便 cpu 限制/请求取决于 Kubernetes 调度程序(或节点标签)选择的节点?

获得的行为应该是(或等价于):

  • 在分配 POD 之前,调度器通过根据 Node(或 Node Label)检查不同的 cpu 请求来选择节点
  • 在运行时,Kublet 根据节点(或节点标签)检查特定的 CPU 限制

Mar*_*icz 2

不,每个节点类型不能有不同的请求。您可以做的是创建一个具有特定类型节点的节点亲和力的 pod 清单,以及对该节点类型有意义的请求。对于第二种节点,您将需要第二个对该节点类型有意义的 pod 清单。这些 Pod 清单仅在亲和力规范和资源请求方面有所不同 - 因此对它们进行参数化会很方便。您可以使用 Helm 来完成此操作,或者编写一个简单的脚本来完成此操作。

这种方法可以让您在节点子集中启动一个 pod,其资源请求对这些节点有意义,但无法根据其最终位置全局调整其请求/限制。