首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kubernetes中为相同部署的不同节点分配不同数量的pod?

如何在Kubernetes中为相同部署的不同节点分配不同数量的pod?
EN

Stack Overflow用户
提问于 2021-02-03 14:42:58
回答 2查看 203关注 0票数 2

我在一个包含1个主节点和4个工作节点(2-32 4GB和2-4 4GB机器)的集群上运行部署。我想在4 4GB的机器上运行最多10个pods,在32 4GB的机器上运行50个pods。

有没有办法将不同数量的pod分配给Kubernetes中的不同节点进行相同的部署?

EN

回答 2

Stack Overflow用户

发布于 2021-02-03 18:21:49

我想在4 4GB的机器上运行最多10个pods,在32 4GB的机器上运行50个pods。

这可以通过configuring kubelet来限制节点上的最大pod计数:

代码语言:javascript
复制
// maxPods is the number of pods that can run on this Kubelet.
MaxPods int32 `json:"maxPods,omitempty"`

可以在here上找到Github。

有没有办法将不同数量的pod分配给Kubernetes中的不同节点进行相同的部署?

将此添加到您的请求中会使其无法实现。在这一点上,Kubernetes中没有这样的原生机制来满足这一点。这或多或少符合Kubernetes的工作方式及其原则的精神。基本上,你调度你的应用程序,让调度器决定它应该去哪里,除非有非常具体的资源需求,比如GPU。这可以通过标签、亲和力等来实现。

如果您查看Kubernetes-API,您会注意到没有这样的字段可以使您的请求成为可能。但是,API功能可以通过自定义资源进行扩展,这个问题可以通过创建自己的调度程序来解决。但这并不是解决这个问题的简单方法。

您可能还希望设置适当的内存请求。更高的请求将告诉调度器将更多的pod部署到具有更多内存资源的节点。它不是理想的,但它是某种东西。

票数 2
EN

Stack Overflow用户

发布于 2021-02-03 15:33:52

一般来说,调度是基于轮询、最少使用等算法来完成的。

我们可能有通过选择器添加节点亲和性的独立性,但这甚至不能解决计数问题。

也许你必须在工作节点上手动重置这个东西。

比如说-

部署完成后,您执行kubectl top nodes以获取可用的空间。

kubectl get po -o wide将为您提供pods所采用的节点。

现在,为了强制Pod在特定节点中生成,假设是32 4GB的节点,那么可以通过执行以下命令暂时将4 4GB的节点标记为"Not ready“

代码语言:javascript
复制
Kubectl cordon {node_name}

现在删除那些在4 4GB机器上运行的pod,而您希望这些pod在32 4GB机器上运行。在杀死它们之后,它们将自动在任何32 of的节点中生成

然后你就可以执行

Kubectl uncordon {node_name}再次将节点标记为“就绪”。

这是一个有点复杂的东西,也需要大量的计算。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66022479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档