【问题标题】:Resource allocation to pods in KubernetesKubernetes 中 Pod 的资源分配
【发布时间】:2019-03-28 14:13:08
【问题描述】:

假设 Kubernetes 在一个节点 N 中调度了两个 Pod A 和 B。如果 Node N 的资源容量为 (30 CPU, 70 Memory) 并且 Pod A 请求 (5 CPU, 8 memory) 和 Pod B 请求 ( 4 CPU,10 内存),是否可以在两个 Pod 之间共享资源,以保持集群的效率并最大化 Pod 的分配?如何更改代码以实现此目的?假设每个 pod 维护 1 个容器。

【问题讨论】:

  • “在两个 pod 之间共享资源”是什么意思?如果这是您所要求的,您可以共享一个节点 N;您只需要配置调度程序策略来配置 Affinity/Anti-Affinity 以紧密打包您的 pod。

标签: kubernetes


【解决方案1】:

Kubernetes 已经做到了。

Resource Requests 是软预留,也就是说,调度器在将 Pod 放入节点时会将其视为要求,它会将资源分配给 POD,但不会预留资源由请求它的 pod 独占使用。

如果 POD 请求 1Gb 的内存并且只消耗了 500Mb,其他 pod 将能够消耗剩余的。

主要问题是当其他 POD 没有设置限制时,这将阻止调度程序正确控制负载,并且其他正在运行的 pod 可能会影响该 pod。另一个问题是当限制设置得太高时,消耗将达到节点容量。

为了获得适当的平衡和效率,应适当设置请求和限制,并防止过度承诺。

另一个 SO 展示了一个很好的例子:Allocate or Limit resource for pods in Kubernetes?

【讨论】:

  • 感谢您的回复。如果我们假设 pod 没有设置资源限制,我怎么能表明集群中的整个资源将在这两个 pod 之间公平分配。实际上,我只想将所有资源分配给这两个 pod。
  • 如果不设置限制,一些pod会比其他pod消耗更多的资源,没有限制不能保证资源会被公平分割。您可以添加策略以无限制地限制 pod 创建。如果您需要更多资源给 pod,而不是让 pod 消耗太多资源。您设置自动缩放以添加更多副本(如果应用程序可以拆分处理)。其他选项不是添加副本,而是部署更多优先级较低的 pod,当优先级较高的 pod 需要更多资源时,其他优先级较低的 pod 会从节点中逐出。
猜你喜欢
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 2020-09-08
相关资源
最近更新 更多