Example 2-3. Resource limits
apiVersion: v1
kind: Pod
metadata:
name: random-generator
spec:
containers:
- image: k8spatterns/random-generator:1.0
name: random-generator
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 200m
memory: 200Mi
request: Initial resource request for CPU and memory 容器需要的最低资源量(CPU,MEM)
limits: Upper limit until we want our application to grow at max 容器运行中所能分配的最大资源量
根据这两个参数的配置,k8s在集群资源不足的时候有不同的处理策略 – Quality of Service (QoS)
Best-Effort 最大努力
requests和limits两个参数都没有设置。就是没有对资源做限制,只要节点有足够资源会尽可能满足其需求。但是这种容器优先级是最低的:节点CPU或MEM资源不够时,会优先把该类容器杀掉以回收资源。
Burstable 爆发的?
requests和limits都有设置并且requests小于limits。即最低要求requests所指定的资源,最高以limits为上限。优先级较Best-Effort高一点: 节点资源不足时,如果没有Best-Effort类型的容器,会删除该类容器。
Guaranteed 有保障的
requests参数与limits参数相同。具有最高优先级,资源不足时会优先删除Best-Effort和Burstable类容器以确保其运行。
参考 O’Reilly《Kubernetes Patterns》Chapter 2.