NAME CPU(cores) MEMORY(bytes)
apache-757ddfbc75-khhfw 10m 61Mi
答案 0 :(得分:0)
“可能会或可能不会允许容器长时间超过其CPU限制。但是,不会因过度使用CPU而杀死它。”
将不允许容器使用超过平均限制的CPU,其他容器将受到保护,以防止CPU使用率过高。
答案 1 :(得分:0)
从头开始
创建Pod时,Kubernetes调度程序选择一个要在其上运行Pod的节点。每个节点对于每种资源类型都有最大容量:它可以为Pod提供的CPU和内存量。调度程序确保对于每种资源类型,已调度容器的资源请求总数小于节点的容量。请注意,尽管节点上的实际内存或CPU资源使用率非常低,但是如果容量检查失败,调度程序仍会拒绝将Pod放置在节点上。这样可以防止以后资源使用量增加时(例如,在请求率的每日峰值期间)节点上的资源短缺。
要为容器指定CPU请求,请在“容器”资源清单中包含 resources:requests 字段。要指定CPU限制,请包含resources:limits。
CPU请求和限制与容器相关联,但是将Pod视为具有CPU请求和限制很有用。对Pod的CPU请求是对Pod中所有容器的CPU请求的总和。同样,Pod的CPU限制是Pod中所有容器的CPU限制的总和。
Pod调度基于请求。仅当节点具有足够的可用CPU资源来满足Pod CPU请求时,才能将Pod安排在该节点上运行。
在pod的配置文件下面,容器请求100个CPU,这可能超出了群集中任何节点的容量。
apiVersion: v1
kind: Pod
metadata:
name: cpu-demo
namespace: cpu-test
spec:
containers:
- name: cpu-demo-ctr-2
image: vish/stress
resources:
limits:
cpu: "100"
requests:
cpu: "100"
args:
- -cpus
- "2"
创建pod后,您将获得类似的输出:
这表明由于节点上CPU资源不足而无法调度容器。
答案 2 :(得分:0)
k8s文档参考:
可能会或可能不会允许容器在很长一段时间内超过其CPU限制。但是,它不会因CPU使用率过高而被杀死。
在大多数情况下,什么都不会发生。 CPU的使用非常灵活。
答案 3 :(得分:0)
似乎出现了节流(这不是官方文档中写的):
Kubernetes使用内核限制来实现CPU限制。如果应用程序超出限制,则会受到限制(又称为更少的CPU周期)。另一方面,内存请求和限制的实现方式有所不同,因此更易于检测。您只需检查Pod的上次重启状态是否为OOMKilled。