关于负载均衡器服务,我缺少一些东西。
如果我运行一个负载平衡器并且我的负载分布在3个Pod上,您是否可以保证在有多个节点的情况下,相同“类型”的Pod将平均分布在集群中的所有节点上?
如果我理解正确,Kubernetes将尝试在节点上分布不同种类的Pod,以实现资源的最佳利用。
但这是否保证暴露相同应用程序的Pod也将均匀分布?
复制控制器将确保一定数量的Pod始终在运行,但是在节点故障的情况下会发生什么;假设1个节点的网络接口出现故障,并且在该节点上安排了3个相同类型的Pod。在那种情况下,rc会注意它们在另一个节点上又重新启动了,但是您怎么知道该api不会暂时中断呢?我想象使用负载平衡器时可以防止这种情况发生吗?
答案 0 :(得分:2)
Kubernetes尝试分配他所有节点的负载。因此,可能是您在同一节点上部署了所有Pod。 如您所说,如果节点发生故障,它将使您所有的Pod无法访问。
作为开发人员,如果需要将Pod分布在不同的节点之间,则可以使用它的工具:
Daemon Set:确保所有(或某些)节点都运行Pod的副本。 https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
节点选择器:您可以使用标签定义要将Pod部署到的那些节点。 https://docs.openshift.com/container-platform/3.6/admin_guide/scheduling/node_selector.html
还有其他方法可以实现您的目标,例如使用亲和力和反亲和力或吊舱间亲和力和反亲和力。 在这里,您将获得kubernetes在文档中提供的所有解决方案:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
答案 1 :(得分:1)
是,不是。
Kube调度程序将尝试尽最大努力散布您的Pod,但是在某些情况下会导致在同一节点上进行调度。所以“不”。
但是您可以使用kubernetes的多个功能来实现这一点,例如pod反关联,守护程序集,主机端口,调度程序等。如果您确切地知道需要什么以及如何实现它,那么请“是”。