【问题标题】:How to run two pods in exclusive nodes?如何在独占节点上运行两个 Pod?
【发布时间】:2015-09-07 16:38:51
【问题描述】:

我想在独占节点中运行两个 pod。例如,我有 4 个节点(node-1、node-2、node-3、node-4)和 2 个 pod(pod-1、pod-2)。我只希望一个 pod 在每个节点中运行,每个 pod 在两个节点中运行,例如node-1 和 node-2 中的 pod-1,node-3 和 node-4 中的 pod-2。有没有办法配置这种方式?

【问题讨论】:

  • 这会破坏像 kubernetes 这样的东西的目的。 Kubernetes 应该以一种你不关心它们实际运行在哪里的方式运行你的容器,只关心它们正在运行。
  • 感谢克里斯蒂安的回答。虽然我想根据节点的资源来管理节点分配,但 Kubernetes 目前似乎没有那么智能...
  • 是的,不幸的是,Kubernetes 的调度器还没有那么智能。对于可以处理这个问题的东西,你会想要研究 mesos 之类的东西,有些人已经尝试将其与 kubernetes 一起使用。 Mesos 在集群上进行调度时会考虑更多因素。
  • 我还考虑在 Mesos(CoreOS 上)上使用 Docker。但是对于我的 4-8 个节点的用例来说,它看起来太不成熟而且有点太重了。

标签: kubernetes


【解决方案1】:

您可以通过创建无法在同一台机器上调度的 pod 定义来强制独占。最简单的方法是为每个 pod 分配相同的主机端口。一旦您为两个 pod 定义设置了相同的主机端口,如果您创建两个复制控制器,每个控制器都有两个副本,那么调度程序将运行 2 个 pod 的 2 个副本,分布在 4 台机器上。

【讨论】:

  • 谢谢,罗伯特!我会试试的。
【解决方案2】:

我真正想做的是可以通过node selection 进行比较。

【讨论】:

    【解决方案3】:

    【讨论】:

      【解决方案4】:

      您也可以使用无头服务 - 它不能保证排他性,但算法会在调度期间更喜欢它。

      【讨论】:

      • 谢谢,克莱顿。是否可以像非无头服务一样使用 DNS 解析无头服务的 IP?
      • 如果您询问无头服务的 A 记录,您将获得每个 pod 的一条 A 记录(无头没有集群 IP)。我认为我们进行了更改,以便常规服务的 SRV 记录将包含每个 pod 的 A 记录,但可能不会。如果您选择无头服务,您也不会获得 env var(尽管它存在一个错误,我们计划以一种或另一种方式修复它)。
      • 此外,如果您配置了谓词,常规服务也更喜欢以相同的方式传播 - 如果您不想强制使用集群 ip,我只建议使用无头服务
      • docs.openshift.org/latest/admin_guide/scheduler.html#use-cases 包含开启服务传播优先级的示例
      • 谢谢。在需要可变端口之前,我会尝试使用 A 记录。另外,我将深入研究调度程序。
      猜你喜欢
      • 2020-03-17
      • 2014-07-24
      • 2022-01-17
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多