Kubernetes k8s究竟如何为命名空间保留资源?

Kubernetes k8s究竟如何为命名空间保留资源?,kubernetes,Kubernetes,我对ns的申请/限额有以下问题: 考虑以下命名空间资源设置: -要求:1核/1GiB -限制:2芯/2GiB 这是否意味着命名空间保证有1/1GiB?它是如何在群集节点上物理实现的?这是否意味着k8s以某种方式严格保留ns的这些值(在创建时)?在哪个时间点进行预订 限制2核/2GiB-这是否意味着ns不能保证这一点,这取决于当前群集的状态?就像当前集群只有100MB可用ram,但在运行时pod需要比资源请求高出200MB—pod将重新启动?如果pod需要超出其请求,k8s将从何处获取此资源 和K

我对ns的申请/限额有以下问题:

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

  • 这是否意味着命名空间保证有1/1GiB?它是如何在群集节点上物理实现的?这是否意味着k8s以某种方式严格保留ns的这些值(在创建时)?在哪个时间点进行预订

  • 限制2核/2GiB-这是否意味着ns不能保证这一点,这取决于当前群集的状态?就像当前集群只有100MB可用ram,但在运行时pod需要比资源请求高出200MB—pod将重新启动?如果pod需要超出其请求,k8s将从何处获取此资源

  • 和K8S水平自动缩放:考虑我们有2个应用程序和2个名称空间——每个应用程序有1个ns。我们设置了两个ns配额,以便为2个额外的POD提供一些空闲缓冲区,并在一定的CPU阈值下水平自动扩展到2个POD。那么,这样的设置真的有意义吗?我担心的是,如果NS保留了它的资源,而没有其他NS可以利用它们——我们可以在每个NS副本集中创建两个额外的POD,而不需要自动扩展,不断地使用这些POD。如果我们在1ns内有超过1个应用程序,我可以看到使用自动缩放的一个要点,这样这些应用程序就可以共享相同的资源缓冲区进行缩放。这个假设正确吗

  • 您认为每个应用程序有1个ns是一种好的做法吗?为什么?

  • p、 我知道什么是资源请求/限制以及它们之间的区别。在大多数信息来源中,对这个概念只有非常高层次的解释

    提前感谢。

    文件明确说明如下:

    在集群的总容量小于名称空间的配额之和的情况下,可能存在资源争用。这是以先到先得的方式处理的

    资源配额独立于群集容量。它们以绝对单位表示。因此,如果将节点添加到集群中,这不会自动使每个命名空间能够消耗更多资源

    资源配额会分割聚合集群资源,但不会对节点产生任何限制:来自多个名称空间的pod可以在同一节点上运行

    ResourceQuotas是命名空间中设置的约束,它不保留容量,只设置每个命名空间可以使用的资源限制

    为了有效地“保留”容量,您必须对所有名称空间设置限制,以便其他名称空间使用的资源不会超过集群所能提供的资源。通过这种方式,您可以更多地保证命名空间将具有运行其负载的可用容量

    文件建议:

    • 在几个团队(名称空间)之间按比例划分集群资源总量
    • 允许每个团队根据需要增加资源使用量,但有一个慷慨的限制,以防止意外资源耗尽
    • 从一个命名空间检测需求,添加节点,并增加配额
    鉴于此,您的问题的答案如下:

  • 它不是保留容量,保留发生在资源(pod)创建时

  • 保留后运行的资源不受影响。如果资源创建将过度提交配额(限制),则拒绝新资源

  • 如文件中所述,如果限额高于容量,预订将以先到先得的方式进行

  • 简单地说,对于资源隔离和管理,这个问题可以解决它自己的问题