在不同的物理服务器上调度Kubernetes Pod

时间:2020-07-14 14:12:50

标签: kubernetes kubernetes-pod

在我的集群中,有30个VM分别位于3个不同的物理服务器中。我想在不同的物理服务器上部署每个工作负载的不同副本。 我知道我可以使用podAntiAffinity在不同的VM上部署副本,但是我找不到任何方法来保证在不同的物理服务器上进行分散复制。

我想知道有什么方法可以解决这个挑战吗?

1 个答案:

答案 0 :(得分:1)

我相信您给出了答案;)

我去看了Kubernetes Patterns一书(PDF在here中免费提供),看看那里是否有与此相关的东西,并准确地发现了这一点:

为表示应如何扩展Pod以实现高可用性,或将其打包并放置在一起以提高延迟,可以使用Pod亲和力和抗亲和力。

节点相似性按节点粒度工作,但Pod相似性不限于节点和 可以在多个拓扑级别表达规则。使用topologyKey字段,然后 匹配标签,则可以执行更细粒度的规则,这些规则结合了 节点,机架,云提供商区域和区域[...]

我也非常喜欢k8s文档,它们非常完整并且包含很多示例,因此也许您可以从here中获得一些想法。我认为主要想法是创建自己的亲和力/反亲和力规则。

----------------------------------- 编辑 ---- -------------------------------

k8s 1.18版中有一个新功能,可能是一个更好的解决方案。

它叫:Pod Topology Spread Constraints

您可以使用拓扑扩展约束来控制Pod如何在故障域(例如区域,区域,节点和其他用户定义的拓扑域)之间跨群集分布。这可以帮助实现高可用性以及有效的资源利用。