Is there a default memory request and\or limits for pods\containers in k8s?

Viewed 883

Hallo fellow DevOps people,

I'm trying to understand whether the is a base request and\or limit per pod\container in k8s as they are today or if you know of a change in the future regarding that.

I've seen this answer: What is the default memory allocated for a pod stating that there isn't any, at least for Google's implementation of k8s and I'd like to know for sure of that also for the current state of k8s in on-prem deployments.

Are there any base request or limit values for a container\pod?

EDIT: Also is there a way k8s would predict container memory request by the application development language or environment variables set for deployment (like from java container RUN command or env: JVM_OPTS -Xms1G -Xmx1G)?

2 Answers

There isn't a default limit or request. In order to configure default resources you should create a LimitRange resource as described here: https://docs.openshift.com/container-platform/3.11/dev_guide/compute_resources.html#dev-viewing-limit-ranges

If you want every new project to be created with certain resources limits you can modify the default project template as described here: https://docs.openshift.com/container-platform/3.11/admin_guide/managing_projects.html#modifying-the-template-for-new-projects

This doesn't change in 4.6 as well, only the implementation of how to modify the LimitRange or default project template. (The methodology is exactly the same)

As for your question of predicting resources of applications, there are some players around this issue. I've only heard about turbonomic which can even change your Deployments resources automatically by utilization and maybe also some custom metrics.

By default there are no resource requests or limits, which means every pod is created using BestEffort QoS. If you want to configure default values for requests and limits you should make use of LimitRange.

BestEffort pods by definition is "for a Pod to be given a QoS class of BestEffort, the Containers in the Pod must not have any memory or CPU limits or requests." BestEffort pods have the lowest priority for Kubernetes scheduler and can be evicted in case of resource contention

All above said is true for all Kubernetes distributions including OpenShift.

Related