Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何跨多个节点分配相等的部署_Kubernetes_Kubernetes Pod - Fatal编程技术网

Kubernetes 如何跨多个节点分配相等的部署

Kubernetes 如何跨多个节点分配相等的部署,kubernetes,kubernetes-pod,Kubernetes,Kubernetes Pod,这似乎应该足够简单,但我还没有找到答案 我们有三个标记节点: thalia0 thalia1 thalia2 以及一个名为mm sa的部署规范 我只想将mm sa的副本数量设置为48,并让调度器为每个节点分配16个POD 我能找到的最接近这个的是这里,但看起来这个还不可用:。我也发现了这一点,但它说“根据文档,可以用于调度pod的每个节点都必须存在nodeAffinity,并且选择了权重总和最大的节点。” 这似乎是一个如此简单的用例,但如果不使用一种天真的方法,我就无法理解如何实现它,比如在定义

这似乎应该足够简单,但我还没有找到答案

我们有三个标记节点:

thalia0
thalia1
thalia2

以及一个名为
mm sa
的部署规范

我只想将
mm sa
的副本数量设置为48,并让调度器为每个节点分配16个POD

我能找到的最接近这个的是这里,但看起来这个还不可用:。我也发现了这一点,但它说“根据文档,可以用于调度pod的每个节点都必须存在nodeAffinity,并且选择了权重总和最大的节点。”


这似乎是一个如此简单的用例,但如果不使用一种天真的方法,我就无法理解如何实现它,比如在定义名为
mm-sa1
的3种不同部署时<编码>mm-sa3并使用
节点选择器
相应地分配每个节点。(注意:我目前正在使用
节点选择器
在单个节点上分配
mm sa
的16个副本)。

Kubernetes将在复制控制器或服务中自动将POD分布在单个区域群集中的节点上。因此,如果没有其他节点,@davidmaze的解决方案应该适用。但是,由于您提到您不希望在其他节点上进行调度,因此我建议使用nodeSelector。通过使用nodeSelector,只要节点在YAML中具有相同的键值对,pod就能够在节点上进行调度


您可以在此处阅读有关nodeSelector的更多信息:

默认情况下,调度程序应将POD分布在节点上;您是否有一个特定的要求,即每个节点上的数据量正好是1/3,或者您只是不希望所有内容都集中在一个节点上?3个节点中的每个节点都配置了相同的RAM和CPU,因此每个节点16个POD是通过测试确定的最佳配置。因此,每个节点上的1/3是一个理想值。如果只设置
副本:48
并部署它,而不特别试图影响放置,会发生什么?好问题。我们不希望POD在其他节点上运行,但由于部署规范的
imagePullPolicy
设置为
Never
(所有必需的docker映像都在特定节点上),我假设调度程序只会将POD分配给具有特定图像的节点。我使用的是
节点选择器
(请参阅上面编辑的帖子)。。。但是,这对我的用例不起作用,因为我想在多个节点上分发pod。有没有一种方法可以在多个节点之间强制使用标签?我相信如果您为要部署到的3个节点提供相同的标签,调度程序应该均匀地部署POD。酷!我不知道你能做到。我刚刚测试了它,它当然允许标签跨越多个节点。谢谢