Resource types
CPU and memory are each a resource type. A resource type has a base unit. CPU is specified in units of cores, and memory is specified in units of bytes.
CPU and memory are collectively referred to as compute resources, or just resources. Compute resources are measurable quantities that can be requested, allocated, and consumed. They are distinct from API resources. API resources, such as Pods and Services are objects that can be read and modified through the Kubernetes API server.
Resource requests and limits of Pod and Container
Each Container of a Pod can specify one or more of the following:
spec.containers[].resources.limits.cpu
spec.containers[].resources.limits.memory
spec.containers[].resources.requests.cpu
spec.containers[].resources.requests.memory
Although requests and limits can only be specified on individual Containers, it is convenient to talk about Pod resource requests and limits. APod resource request/limit for a particular resource type is the sum of the resource requests/limits of that type for each Container in the Pod.
Meaning of CPU
Fractional requests are allowed. A Container with spec.containers[].resources.requests.cpu
of 0.5
is guaranteed half as much CPU as one that asks for 1 CPU. The expression 0.1
is equivalent to the expression 100m
, which can be read as “one hundred millicpu”. Some people say “one hundred millicores”, and this is understood to mean the same thing. A request with a decimal point, like 0.1
, is converted to 100m
by the API, and precision finer than 1m
is not allowed. For this reason, the form 100m
might be preferred.
CPU is always requested as an absolute quantity, never as a relative quantity; 0.1 is the same amount of CPU on a single-core, dual-core, or 48-core machine.
Example
apiVersion: v1 kind: Pod metadata: name: frontend spec: containers: - name: db image: mysql env: - name: MYSQL_ROOT_PASSWORD value: "password" resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m" - name: wp image: wordpress resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m"
References
Reference | URL |
Managing Compute Resources for Containers | https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ |