0

I'm trying to debug OOM issues in our GKE cluster. On Google's recommendation I've assigned memory limits to most of our pods. In reading the QoS docs I see that there are three classes, Guaranteed, Bustable, and Best Effort, and that those are based on the equality of resource requests and limits for containers in a pod.

If a pod only has a single container what QoS level does it get? Can I assign it Guaranteed or Best Effort?

0

It turns out I can figure this out by just checking the state of pods. :)

Empirically, it seems that the pods are all QoS level "Burstable" no matter whether there are resource requests, limits, both or none.

$ 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

In the last case, I set no requests in the manifest for the pod, but kubernetes sets a default request.

I feel like this is a bug because the spec says that if all containers have the same amount of requests it should be "Guaranteed" which I think is true if there is one container and it defines a limit.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.