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?

jwadsack
  • 201
  • 1
  • 8

1 Answers1

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.

jwadsack
  • 201
  • 1
  • 8