在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?
答案 0 :(得分:0)
将限制传递给容器运行时接口,并且在CPU被设置为限制值的情况下,该限制值将利用运行时的本机机制(即:cgroups)来限制CPU,如果它试图超过该值。在达到该值之前,CPU不会受到任何限制。
内存请求和限制单独运行,并且通常包括稍微延迟,而控制循环监视消耗,如果容器超过设置限制,将使用“OOMKill”消息驱逐和终止容器(内存不足)杀人)包括在内。
您可以在kubernetes docs:Managing Compute Resources for Containers
中找到更多详细信息Kubernetes不包含动态响应其他输入和限制资源的方法,但您可以更改请求或限制值并使其成为新的所需状态。
对于Kubernetes 1.8及更高版本,存在Pod Priority and pre-emption的概念,如果资源在集群内受到限制,它也会影响在Pod中运行的容器。