Chapter 14. Managing pods’ computational resources

 

This chapter covers

  • Requesting CPU, memory, and other computational resources for containers
  • Setting a hard limit for CPU and memory
  • Understanding Quality of Service guarantees for pods
  • Setting default, min, and max resources for pods in a namespace
  • Limiting the total amount of resources available in a namespace

Up to now you’ve created pods without caring about how much CPU and memory they’re allowed to consume. But as you’ll see in this chapter, setting both how much a pod is expected to consume and the maximum amount it’s allowed to consume is a vital part of any pod definition. Setting these two sets of parameters makes sure that a pod takes only its fair share of the resources provided by the Kubernetes cluster and also affects how pods are scheduled across the cluster.

14.1. Requesting resources for a pod’s containers

When creating a pod, you can specify the amount of CPU and memory that a container needs (these are called requests) and a hard limit on what it may consume (known as limits). They’re specified for each container individually, not for the pod as a whole. The pod’s resource requests and limits are the sum of the requests and limits of all its containers.

14.1.1. Creating pods with resource requests

Let’s look at an example pod manifest, which has the CPU and memory requests specified for its single container, as shown in the following listing.

14.1.2. Understanding how resource requests affect scheduling

 

14.1.3. Understanding how CPU requests affect CPU time sharing

 
 

14.1.4. Defining and requesting custom resources

 

14.2. Limiting resources available to a container

 
 

14.2.1. Setting a hard limit for the amount of resources a container can use

 
 

14.2.2. Exceeding the limits

 

14.2.3. Understanding how apps in containers see limits

 
 
 
 

14.3. Understanding pod QoS classes

 

14.3.1. Defining the QoS class for a pod

 
 
 
 

14.3.2. Understanding which process gets killed when memory is low

 
 
 
 

14.4. Setting default requests and limits for pods per namespace

 
 
 

14.4.1. Introducing the LimitRange resource

 
 

14.4.2. Creating a LimitRange object

 
 

14.4.3. Enforcing the limits

 
 

14.4.4. Applying default resource requests and limits

 
 
 

14.5. Limiting the total resources available in a namespace

 
 
 

14.5.1. Introducing the ResourceQuota object

 
 

14.5.2. Specifying a quota for persistent storage

 
 
 

14.5.3. Limiting the number of objects that can be created

 
 
 

14.5.4. Specifying quotas for specific pod states and/or QoS classes

 

14.6. Monitoring pod resource usage

 
 
 

14.7. Summary

 
 
 
 
sitemap

Unable to load book!

The book could not be loaded.

(try again in a couple of minutes)

manning.com homepage
test yourself with a liveTest