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