容器资源限制在 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
所以你真的不能只定义一个而没有另一个。所以在你的情况下,你想定义它的请求,这样它就不会被限制定义。
在官方文档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
所以你真的不能只定义一个而没有另一个。所以在你的情况下,你想定义它的请求,这样它就不会被限制定义。