容器资源限制在 Kubernetes 中的工作原理

How container resource limits works in Kubernetes

在官方文档here中,pod.spec.container.resources.limits的定义如下: “限制描述了允许的最大计算资源量。”

我了解 k8s 禁止 pod 消耗超过限制中指定的资源。 文档没有说没有在没有限制中指定的资源量的节点中调度 pod。

例如,如果我的集群中的每个节点都有 2 个 cpu,并且我尝试部署一个将 cpu 限制为 3 的 pod,我的 pod 将永远不会 运行 并将处于 Pending.

状态

这是示例模板:mypod.yml

apiVersion: v1
kind: Pod
metadata:
  name: secondbug
spec:
  containers:
  - name: container
    image: nginx
    resources:
      limits:
        cpu: 3

这种行为是故意的吗?为什么?

您有 3 种 pods,pods 没有请求定义,pods 是可突发的,有限制和请求,第三种只有限制或定义的请求.

对于第三种情况,如果你只定义了limits或者requests,其他的将按照第一种定义:

resources:
  limits:
    cpu: 3

实际上是:

resources:
  limits:
    cpu: 3
  requests:
    cpu: 3

所以你真的不能只定义一个而没有另一个。所以在你的情况下,你想定义它的请求,这样它就不会被限制定义。