我正在尝试调试 GKE 集群中的 OOM 问题。根据 Google 的建议,我为大多数 Pod 分配了内存限制。在阅读QoS 文档我看到有三个课程,保证,易爆, 和最大努力,这些都是基于 pod 中容器的资源请求和限制的平等性。
如果一个 Pod 只有一个容器,它会获得什么 QoS 级别?我可以为其分配吗保证或者最大努力?
答案1
事实证明我只需检查 pod 的状态就能解决这个问题。:)
从经验上看,无论有资源请求、限制、有还是无,似乎所有 Pod 的 QoS 级别都是“可突发的”。
$ kubectl describe pod requests-limits-3312827547-hony0
...
Containers:
...
Limits:
memory: 50G
Requests:
cpu: 100m
memory: 30G
...
QoS Class: Burstable
$ kubectl describe pod requests-only-3220520255-a8689
...
Containers:
...
Requests:
cpu: 100m
memory: 14G
...
QoS Class: Burstable
$ kubectl describe pod none-set-328716889-3icpc
...
Containers:
...
Requests:
cpu: 100m
memory: 150M
...
QoS Class: Burstable
在最后一种情况下,我没有在清单中为 pod 设置任何请求,但 kubernetes 设置了默认请求。
我觉得这是一个错误,因为规范说如果全部容器具有相同数量的请求,它应该是“保证的”,我认为如果有一个容器并且它定义了一个限制,那么这是正确的。