在k8s中,我们可以将资源指定为:
apiVersion: v1
kind: Pod
metadata:
name: cpu-demo-2
spec:
containers:
- name: cpu-demo-ctr-2
image: vish/stress
resources:
limits:
cpu: "100"
requests:
cpu: "300"其中我们可以指定requests (k8s保证容器获得如此多的请求)和最大请求(limits)。
我的问题是,如果集群上没有负载,k8s会允许这个pod被限制到达到它的极限吗?
或者,有没有办法为容器请求所需的cpus?
发布于 2018-01-11 11:42:20
该限制被向下传递给容器运行时接口,并且在CPU的情况下被设置为一个限制值,当CPU试图超过该值时,该限制值将利用运行时的本机机制(即: cgroups)来限制CPU。在达到该值之前,CPU不会有任何限制。
内存请求和限制分别运行,通常在控制循环监视消耗时包括轻微延迟,如果容器超过设定的限制,则将驱逐并终止容器,并将"OOMKill“消息(out-of-memory kill)作为原因包括在内。
您可以在kubernetes文档中找到更多细节:Managing Compute Resources for Containers
Kubernetes不包括动态响应其他输入和限制资源的方法,但您可以更改请求或限制值,并将其设置为新的所需状态。
在Kubernetes1.8和更高版本中,存在Pod Priority and pre-emption的概念,如果资源在集群内变得受限,它也会影响在Pod中运行的容器。
https://stackoverflow.com/questions/48165691
复制相似问题