Kubernetes 为什么一个具有相同请求和限制的容器的pod会被归类为Burstable pod?

Kubernetes 为什么一个具有相同请求和限制的容器的pod会被归类为Burstable pod?,kubernetes,Kubernetes,在中,就资源QOS而言被分类为Burstable的pod的条件定义为 如果为一个或多个请求设置了请求和可选限制(不等于0) 跨一个或多个容器分配更多资源,并且它们不相等, 然后pod被归类为Burstable。当没有限制时 如果指定,则默认为节点容量 所以基本上不同的说法是: 请求跨pod中的一个或多个容器为一个或多个资源(cpu/内存)设置 限制是可选的:如果设置,则它们应不等于相同的请求 资源 但随后的文档中给出了以下示例作为Burstablepod的示例: containers: na

在中,就资源QOS而言被分类为
Burstable
的pod的条件定义为

如果为一个或多个请求设置了请求和可选限制(不等于0) 跨一个或多个容器分配更多资源,并且它们不相等, 然后pod被归类为Burstable。当没有限制时 如果指定,则默认为节点容量

所以基本上不同的说法是:

  • 请求
    跨pod中的一个或多个容器为一个或多个资源(cpu/内存)设置
  • 限制
    是可选的:如果设置,则它们应不等于相同的
    请求
    资源
  • 但随后的文档中给出了以下示例作为
    Burstable
    pod的示例:

    containers:
      name: foo
        resources:
          limits:
            cpu: 10m
            memory: 1Gi
          requests:
            cpu: 10m
            memory: 1Gi
    
      name: bar
    
    注意:容器
    bar
    没有指定资源

    此示例满足条件1。但是,它不满足条件2,因为限制和请求是为一个容器设置的,但它们相等

    那么,为什么这个pod被归类为
    Burstable
    pod呢


    K8s文档包含QOS解释和示例:

    调度器对整个吊舱(即每个集装箱)进行服务质量(QOS)评估,然后进行最低评估

    看看这个例子:

    apiVersion: v1
    kind: Pod
    metadata:
      name: class
    spec:
      containers:
      - name: container1
        image: busybox
        command: ["sh"]
        args: ["-c","sleep 3600"]
        resources:
          requests:
            memory: 100Mi
            cpu: 200m
          limits:
            memory: 100Mi
            cpu: 200m
      - name: container2
        image: busybox
        command: ["sh"]
        args: ["-c","sleep 3600"]
        resources:
          requests:
            memory: 100Mi
            cpu: 200m
    
    container1
    具有保证的QoS,因为它定义了请求和限制,并且它们是相等的

    container2
    具有稳定的QoS,因为它没有定义限制,只定义了请求

    根据两个容器进行等级pod评估,并采取最低评估:

    min(Guaranteed, Burstable) = Burstable
    

    参考资料:

    是否有参考资料说明调度器以这种方式工作以评估pod QOS的位置?你能添加一个链接吗?此外,在我的示例中,容器
    应归类为
    尽力而为
    ,因为它没有指定资源。那么,在您解释k8s调度程序的工作原理之后,这个pod不应该被归类为
    最大努力
    pod,而不是
    Burstable
    。但是我的示例(k8s文档)应该是
    最大努力
    ,而不是
    Burstable
    ,对吗?另外,我没有看到它在这个参考文献中明确写出来,它是这样工作的:获取pod中容器的最小QOS。在您的示例中,您没有写第二个容器的定义,所以我不能说什么。您可以使用我的示例,更改值和/或省略一些请求/限制部分,看看会发生什么。不,我没有错过编写第二个容器的定义。这是一个没有定义任何资源的容器,完全是从我由kubernetes链接的文档中复制的示例。请编写您使用的链接。