用例:两个容器请求节点上的完整内存



我有以下用例:

  • 假设node1 has 4GB RAMnode2 has 4GB RAM.

  • pod1请求了2GB的"resources.requests"。

  • pod2请求了2GB的"resources.requests"。

  • 假设"调度程序"在节点 1 上发送两个 Pod。

  • pod1占用 250MB,pod2在节点 1 上占用 250MB。

  • 现在,pod3 comes,它没有资源声明。

  • 假设"调度程序"也在节点 1 上发送 pod3。

在这里,如果 pod3 开始占用空间并获得 2GB 空间,则节点 1 上只剩下 1.5GB 可用空间。

会发生什么?

它会从节点 1 中逐出pod1pod2并将它们移动到节点 2 吗?

在您描述的情况下,实际内存使用情况为

内存2
pod请求的内存已用
1 2.0 GiB 0.25 GiB
2.0 GiB0.25 GiB
30.0 GiB2.0 GiB
免费0.0 GiB1.5 GiB

为了解决您的查询,答案是否定的,pod 1pod 2不会被踢出node 1并重新定位到node 2。由于node 1仍然可以容纳您指定的用例中pod 3所需的 2GB 资源,因此在pod 1pod 2各自占用 500mb 后,pod 3将继续占用node 1,剩下node 13.5GB。


根据我对 Kubernetes 的理解,首先部署到nodepod将被优先考虑,使用必要的资源,而不是重新定位或转移到其他节点。如果生成了新的pod并且节点没有足够的内存,调度程序会将新 Pod 分配给具有足够内存的节点。假设没有创建其他节点,则该pod将被标记为不可调度。

这意味着pod 1pod 2将保留在node 1上,并且pod 3也将部署在那里,除非node 1无法提供所需的内存,在这种情况下,pod 3将被重新定位到node 2

注意:此处的所有图都用作本主题中的示例,在现实生活中并非如此,因为运行的其他服务也会消耗资源。

最新更新