148422597X Kubernetes Management Design Patterns [Vohra 2017-01-29] {E559F6BB}

marco.cirilli
from marco.cirilli More from this publisher
19.06.2021 Views

Chapter 11 ■ Using ConfigMapsFigure 11-24. Pod description lists volume of type ConfigMapSummaryIn this chapter we introduced ConfigMaps, which are maps of configuration properties that may be used inKubernetes object definitions such as pods, replication controllers, and also to set environment variablesand command arguments. Subsequently we discussed creating ConfigMaps from directories, files, andliteral values, and finally consuming the ConfigMaps. In the next chapter we shall discuss setting resourcequotas.277

CHAPTER 12Using Resource QuotasIn Chapter 10 we introduced a resource consumption model based on requests and limits, using whichresources (CPU and memory) are allocated to a pod’s containers.ProblemAlthough we discussed allocating resources to a pod’s containers, we did not take some other factors intoconsideration. The resource requirements vary from one development team to another. If one developmentteam were to use all or most of the resources on a node, another team would not be able to run anyapplication on the same node. Second, the resource requirements vary across the different phases ofapplication development. Application development would have different resource usage than applicationtesting and application in-production work. The resource allocation pattern discussed in Chapter 10 doesnot provide a solution for any of these factors.SolutionKubernetes provides a management design pattern for elastic quotas. Elastic quotas are not completelyelastic, and a fixed upper limit that is flexible to some extent based on the scope (discussed later in thischapter) is imposed. Resource quotas are a specification for limiting the use of certain resources in aparticular namespace. The quota is not on a particular object, such as a pod or a replication controller, buton the aggregate use within a namespace. The objective is to provide a fair share of resources to differentteams, with each team assigned a namespace with quotas. Another application of quotas is creating differentnamespaces for production, development, and testing; different phases of application development havedifferent resource requirements. Creating or updating a resource should not exceed the quota restraint,failing which the resource is not created or updated, and an error message is generated. Quotas could beset on compute resources (CPU and memory), which were discussed in chapter 10, and object counts (suchas pods, replication controllers, services, load balancers, and ConfigMaps, to list a few). When a quota isset for compute resources, requests or limits must be specified for those resources. Quotas are enabled bydefault. The total cluster capacity, which could vary if nodes are added or removed, is not a limiting factorwhen setting quotas. The total of the quotas of namespaces could exceed the cluster capacity, and resourcecontention will be resolved on a first-come-first-served basis. Resource contention is resolved before aresource is created and does not affect resources already created. Once a resource has been created, anychanges to the quota setting do not affect the resource.© Deepak Vohra 2017D. Vohra, Kubernetes Management Design Patterns, DOI 10.1007/978-1-4842-2598-1_12279

CHAPTER 12

Using Resource Quotas

In Chapter 10 we introduced a resource consumption model based on requests and limits, using which

resources (CPU and memory) are allocated to a pod’s containers.

Problem

Although we discussed allocating resources to a pod’s containers, we did not take some other factors into

consideration. The resource requirements vary from one development team to another. If one development

team were to use all or most of the resources on a node, another team would not be able to run any

application on the same node. Second, the resource requirements vary across the different phases of

application development. Application development would have different resource usage than application

testing and application in-production work. The resource allocation pattern discussed in Chapter 10 does

not provide a solution for any of these factors.

Solution

Kubernetes provides a management design pattern for elastic quotas. Elastic quotas are not completely

elastic, and a fixed upper limit that is flexible to some extent based on the scope (discussed later in this

chapter) is imposed. Resource quotas are a specification for limiting the use of certain resources in a

particular namespace. The quota is not on a particular object, such as a pod or a replication controller, but

on the aggregate use within a namespace. The objective is to provide a fair share of resources to different

teams, with each team assigned a namespace with quotas. Another application of quotas is creating different

namespaces for production, development, and testing; different phases of application development have

different resource requirements. Creating or updating a resource should not exceed the quota restraint,

failing which the resource is not created or updated, and an error message is generated. Quotas could be

set on compute resources (CPU and memory), which were discussed in chapter 10, and object counts (such

as pods, replication controllers, services, load balancers, and ConfigMaps, to list a few). When a quota is

set for compute resources, requests or limits must be specified for those resources. Quotas are enabled by

default. The total cluster capacity, which could vary if nodes are added or removed, is not a limiting factor

when setting quotas. The total of the quotas of namespaces could exceed the cluster capacity, and resource

contention will be resolved on a first-come-first-served basis. Resource contention is resolved before a

resource is created and does not affect resources already created. Once a resource has been created, any

changes to the quota setting do not affect the resource.

© Deepak Vohra 2017

D. Vohra, Kubernetes Management Design Patterns, DOI 10.1007/978-1-4842-2598-1_12

279

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!