我们有一个Java应用程序分布在Google Cloud Platform的多个Pod上。我们还设置了内存请求,以便为Pod提供节点上可用于堆空间和非堆空间的内存的特定部分。
在启动Pod时,该应用程序在CPU方面非常占用资源,但在Pod准备就绪后不使用CPU(仅使用0.5%)。如果我们使用容器资源“请求”,则在启动完成后,pod不会释放这些资源。
Kubernetes是否允许指定Pod被允许(几乎)在启动期间使用所有可用的CPU能力并在此之后释放这些资源?由于滚动更新,我们可以防止同时启动两个Pod。
谢谢你的帮助。
最佳答案
如果您指定的请求没有限制,则该值将用于将容器调度到满足请求的可用CPU带宽的适当节点。内核调度程序将假定请求与实际资源消耗相匹配,但不会防止超出使用量。这将从其他容器中“窃取”。
如果您还指定了限制,则如果容器尝试超过该值,它将受到限制。您可以将两者结合使用,以允许对CPU进行突发使用,超出通常的请求,但不能分配节点中的所有内容,从而减慢其他进程的速度。
关于kubernetes - Kubernetes发布要求CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58936247/