【问题标题】:Specify actual resources requests指定实际资源请求
【发布时间】:2018-01-09 10:04:29
【问题描述】:

在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 被限制直到它达到它的限制?

或者,有没有办法为容器请求所需的 CPU?

【问题讨论】:

  • 你能改写你的问题吗?我真的不明白你的意思。容器获取它在requests 键中指定的内容,直到它在limits 键中指定的内容。

标签: kubernetes memory-limit


【解决方案1】:

限制被传递到容器运行时接口,如果 CPU 被设置为一个限制值,它将利用运行时的本机机制(即:cgroups)来限制 CPU,如果它试图超过该值。在达到该值之前,CPU 不会受到任何限制。

内存请求和限制是分开操作的,通常在控制循环观察消耗时会有轻微的延迟,如果容器超过设定的限制,将用“OOMKill”消息驱逐并终止容器(内存不足杀死)作为原因。

您可以在 kubernetes 文档中找到更多详细信息:Managing Compute Resources for Containers

Kubernetes 不包含动态响应其他输入和限制资源的方法,但您可以更改请求或限制值并将其设为新的所需状态。

在 Kubernetes 1.8 及更高版本中,存在Pod Priority and pre-emption 的概念,如果集群内的资源受到限制,它也会影响在 Pod 内运行的容器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2021-10-21
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多