关于ns的请求/限制配额,我有以下问题:

考虑以下命名空间资源设置:
-要求:1核心/ 1GiB
-限制:2核心/ 2GiB

  • 这是否意味着命名空间一定具有1 / 1GiB?在群集节点上如何物理实现?这是否意味着k8s在某种程度上严格保留了这些值ns(在创建时)?预订在什么时间进行?
  • 限制2 core / 2GiB-这是否意味着不能保证ns并取决于当前群集的状态?就像当前集群只有100MiB的可用ram可用,但是在运行时pod需要在资源请求上方多200Mib一样-pod将重新启动吗?如果pod需要超出请求的范围,k8s将从哪里获取该资源?
  • 关于namespace granularity和k8s水平自动缩放:考虑我们有2个应用程序和2个 namespace -每个应用程序1 ns。我们将ns配额都设置为这样,以便有一些空闲缓冲区可容纳2个额外的容器,并在一定的CPU阈值下水平自动缩放至2个容器。那么,进行这样的设置真的有意义吗?我担心的是,如果NS保留了它的资源而没有其他ns可以利用它们-我们可以在每个ns副本集中仅创建2个额外的pod,而不会自动缩放,并且不断使用这些pod。如果在1 ns内有多个应用程序,我可以看到使用自动缩放的一点,这样这些应用程序可以共享相同的资源缓冲区进行缩放。这个假设正确吗?
  • 您如何看待每个应用1 ns的良好做法?为什么?

  • ps我知道什么是资源请求/限制以及它们之间的区别。在大多数信息源中,仅对此概念进行了非常高级的解释。

    提前致谢。

    最佳答案

    docs明确指出以下内容:











    ResourceQuotas 是在 namespace 中设置的约束,不保留容量,它只是设置了每个 namespace 可以使用的资源限制。

    为了有效地“保留”容量,您必须对所有 namespace 设置限制,以便其他 namespace 使用的资源不会超出群集可以提供的资源。这样,您可以进一步保证 namespace 具有可用的容量来运行其负载。

    该文档建议:

  • 按比例将集群总资源分配给几个团队( namespace )。
  • 允许每个团队根据需要增加资源使用量,但是有一个很大的限制以防止意外耗尽资源。
  • 从一个 namespace 检测需求,添加节点,并增加配额。

  • 鉴于此,您的问题的答案是:
  • 不是保留容量,保留发生在创建resource(pod)时。
  • 保留后,运行资源不会受到影响。如果资源创建将过度提交配额(限制)
  • ,则拒绝新资源
  • 如文档中所述,如果限制高于容量,则保留将以先到先得的方式进行。
  • 简单来说,这个问题可以用SO本身来解决,以进行资源隔离和管理。
  • 关于kubernetes - k8s如何精确地为命名空间保留资源?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55373083/

    10-16 17:03