NAME CPU(cores) MEMORY(bytes) apache-757ddfbc75-khhfw 10m 61Mi
zysjyyx41#
k8s文档参考:Container可能会也可能不会被允许长时间超过其CPU限制。但是,它不会因为CPU使用率过高而被终止。大多数情况下,什么都不会发生。CPU的使用非常非常灵活。
whitzsjs2#
似乎发生了节流(官方文档中未写入):Kubernetes使用内核节流来实现CPU限制。如果应用程序超过限制,它将被节流(即更少的CPU周期)。另一方面,内存请求和限制的实现方式不同,并且更容易检测。您只需要检查pod的上次重启状态是否为OOMGilled。https://medium.com/omio-engineering/kubernetes-c5b20bd8a718 #:~:text= Kubernetes%20使用%20内核%20限制%20到,最后%20重新启动%20状态%20已%20OOM终止
gab6jxml3#
从我的经验来看,许多事情中的一件可以而且将会发生:
ylamdve64#
Docs: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#how-pods-with-resource-limits-are-run可能允许也可能不允许Container长时间超过其CPU限制。但是,不会因为CPU使用率过高而终止Container。容器将不被允许使用超过其平均限制的CPU,其他容器将受到保护,防止过度使用CPU。
pokxtpni5#
从零开始
创建Pod时,Kubernetes调度程序将选择一个节点以供Pod在其上运行。每个节点都具有以下每种资源类型的最大容量:它可以为Pod提供的CPU和内存量。调度程序可确保对于每种资源类型,调度容器的资源请求总和小于节点的容量。请注意,尽管节点上的实际内存或CPU资源使用率非常低,如果容量检查失败,调度器仍然拒绝在节点上放置Pod。这防止了当资源使用稍后增加时节点上的资源短缺,例如在请求速率的日峰值期间。要指定容器的CPU请求,请在容器资源清单中包含resources:requests字段。要指定CPU限制,请包含resources:limits。CPU请求和限制与Containers相关联,但将Pod视为具有CPU请求和限制是有用的。Pod的CPU请求是Pod中所有Containers的CPU请求之和。同样,Pod的CPU限制是Pod中所有Containers的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资源不足而无法计划容器。总体文件:库伯内特资源公司,managing-resources。
5条答案
按热度按时间zysjyyx41#
k8s文档参考:
Container可能会也可能不会被允许长时间超过其CPU限制。但是,它不会因为CPU使用率过高而被终止。
大多数情况下,什么都不会发生。CPU的使用非常非常灵活。
whitzsjs2#
似乎发生了节流(官方文档中未写入):
Kubernetes使用内核节流来实现CPU限制。如果应用程序超过限制,它将被节流(即更少的CPU周期)。另一方面,内存请求和限制的实现方式不同,并且更容易检测。您只需要检查pod的上次重启状态是否为OOMGilled。
https://medium.com/omio-engineering/kubernetes-c5b20bd8a718 #:~:text= Kubernetes%20使用%20内核%20限制%20到,最后%20重新启动%20状态%20已%20OOM终止
gab6jxml3#
从我的经验来看,许多事情中的一件可以而且将会发生:
1.如果强制实施Azure策略(在使用时),则不会创建Pod/将关闭Pod。
1.部署将不会成功。
ylamdve64#
Docs: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#how-pods-with-resource-limits-are-run
可能允许也可能不允许Container长时间超过其CPU限制。但是,不会因为CPU使用率过高而终止Container。
容器将不被允许使用超过其平均限制的CPU,其他容器将受到保护,防止过度使用CPU。
pokxtpni5#
从零开始
创建Pod时,Kubernetes调度程序将选择一个节点以供Pod在其上运行。每个节点都具有以下每种资源类型的最大容量:它可以为Pod提供的CPU和内存量。调度程序可确保对于每种资源类型,调度容器的资源请求总和小于节点的容量。请注意,尽管节点上的实际内存或CPU资源使用率非常低,如果容量检查失败,调度器仍然拒绝在节点上放置Pod。这防止了当资源使用稍后增加时节点上的资源短缺,例如在请求速率的日峰值期间。
要指定容器的CPU请求,请在容器资源清单中包含resources:requests字段。要指定CPU限制,请包含resources:limits。
CPU请求和限制与Containers相关联,但将Pod视为具有CPU请求和限制是有用的。Pod的CPU请求是Pod中所有Containers的CPU请求之和。同样,Pod的CPU限制是Pod中所有Containers的CPU限制之和。
Pod调度基于请求。仅当节点具有足够的CPU资源来满足Pod CPU请求时,才会调度Pod在节点上运行。
在下面的pod配置文件中,容器请求100 CPU,这可能超过集群中任何节点的容量。
创建pod后,您将获得类似的输出:
它显示由于节点上的CPU资源不足而无法计划容器。
总体文件:库伯内特资源公司,managing-resources。