如何使用kubectl规模在不同节点上安排相同的pod?

时间:2016-11-16 22:01:00

标签: kubernetes kubectl

kubernetes新手。我可以使用kubectl scale --replicas = N并在不同的节点上启动pod吗?

2 个答案:

答案 0 :(得分:2)

默认情况下,调度程序会尝试跨节点传播pod,因此您在同一节点上没有多个相同类型的Pod。因此,如果你的目标只是努力实现最佳努力,那么就没有什么特别需要了。

如果您想表达要求pod不能在已经有该类型的pod的节点上运行的要求,您可以使用pod anti-affinity,这是当前的Alpha功能。

如果您想确保所有节点(或与特定选择器匹配的所有节点)都有该窗格,您可以使用DaemonSet

答案 1 :(得分:2)

扩展部署(或RC)告诉控制器管理器创建更多的pod,然后新的pod将进行调度。 K8S计划程序将尝试找到最合理的位置来安排您的pod。这并不能保证pod将在不同的节点上启动,但如果您拥有所需的资源,则可能会使其成为可能的情况。不幸的是,这也意味着如果所有pod都可以放在一个节点上,那么有些情况下调度程序可能实际上就是这样(即由于某种原因,所有其他节点都处于不可调度状态)。如果发生这种情况,当条件发生变化时,pod将不会重新安排。

为了确保pod不会在同一节点上共存,您有两个选择:

  • legacy hack:在pod模板中定义hostPort。由于给定的主机端口是每个节点只能分配一次的资源,因此每个节点的pod将永远不会存在一次
  • alpha功能:你可以很早地看看Pod AntiAffinity而不是真正的战斗证明

第一个有一个缺点 - 你可以从不每个节点有多个这种类型的pod,所以它就是。影响滚动部署并限制扩展容量(您永远不会有更多活动容器,然后是节点数)