在 Java 中,有最小堆空间 ( -Xms
) 和最大堆空间 ( -Xmx
)。最小堆空间从启动时分配给 JVM,“最大堆空间”是 JVM 在达到该限制时会说“堆空间不足”的限制。
Openshift/Kubernetes 中 pod 是否存在如此不同的值(初始值和限制值),或者由于某种原因初始内存分配总是等于限制值?
答案1
在Kubernetes中,对CPU、内存等资源的控制机制有
requests
和limits
。
Requests
是容器保证能获得的资源。如果容器请求资源,Kubernetes 将只将其调度到能够为其提供该资源的节点上。
Limits
确保容器不会超过某个值。容器只允许达到限制值,然后受到限制。
如果您没有指定 CPU 限制:
- 容器可以使用其运行节点上可用的所有处理器资源 - 因为它可以使用的 CPU 资源没有上限。
- 当容器在具有默认 CPU 限制的命名空间中运行时,会自动为容器分配默认限制。如果需要更改,可以使用限制范围。
如果您指定了 CPU 限制但未指定 CPU 请求,Kubernetes 会自动分配与限制匹配的 CPU 请求。