在 Kubernetes 的一个节点上只允许一个类型的 pod

Sun*_*mar 9 kubernetes google-kubernetes-engine

如何在 Kubernetes 中的一个节点上只允许一个类型的 pod。Daemon-sets 不适合这个用例。

例如 - 限制在一个节点上仅调度一个 Elasticsearch pod,以防止节点宕机时数据丢失。

可以通过仔细规划pod的CPU/内存资源和集群的机器类型来实现。

有没有其他方法可以做到这一点?

Bas*_*rsa 6

Kubernetes 1.4 推出Inter-pod affinity and anti-affinity。从文档Inter-pod affinity and anti-affinity allow you to constrain which nodes your pod is eligible to schedule on based on labels on pods that are already running on the node中:

这不会阻止 pod 被调度到节点上,但至少当且仅当调度程序别无选择时,pod 才会被调度到节点上。


Rob*_*ley 2

如果您为 pod 指定每个节点最多只能满足一次的约束,那么调度程序将只能为每个节点放置一个 pod。这种约束的一个很好的例子是主机端口(调度程序不会尝试将两个都需要相同主机端口的 pod 放到同一个节点上,因为第二个 pod 永远无法运行)。

另请参阅配置复制控制器时如何为每个 minion/kublet 要求一个 pod?