Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无停机的Kubernetes负载平衡器_Kubernetes - Fatal编程技术网

无停机的Kubernetes负载平衡器

无停机的Kubernetes负载平衡器,kubernetes,Kubernetes,关于负载平衡器服务,我缺少一些东西。 如果我运行一个负载平衡器,并且我的负载分布在3个pod上,您是否可以保证在多个节点的情况下,相同的“类型”pod将均匀分布在集群内的节点上 如果我理解正确,Kubernetes将尝试在节点上散布不同类型的吊舱,以实现资源的最佳利用。 但这是否也能保证公开同一应用程序的pod分布均匀 复制控制器将确保一定数量的POD始终在运行,但在节点发生故障时会发生什么情况;假设一个节点的网络接口关闭,在该节点上安排了3个相同类型的POD。在这种情况下,rc将注意它们在不同

关于负载平衡器服务,我缺少一些东西。
如果我运行一个负载平衡器,并且我的负载分布在3个pod上,您是否可以保证在多个节点的情况下,相同的“类型”pod将均匀分布在集群内的节点上

如果我理解正确,Kubernetes将尝试在节点上散布不同类型的吊舱,以实现资源的最佳利用。
但这是否也能保证公开同一应用程序的pod分布均匀

复制控制器将确保一定数量的POD始终在运行,但在节点发生故障时会发生什么情况;假设一个节点的网络接口关闭,在该节点上安排了3个相同类型的POD。在这种情况下,rc将注意它们在不同的节点上再次启动,但是您如何知道该api不会出现临时中断?我想,当使用负载平衡器时,这是可以防止的吗

是和否

Kube scheduler将尝试在尽最大努力的基础上扩展您的POD,但有些情况会导致在同一节点上进行调度。所以“不”


但是,您可以使用kubernetes的多种功能来实现这一点,如pod反亲和力、守护程序集、主机端口、descheduler等。因此,如果您确切知道需要什么以及如何实现它,请选择“是”。

kubernetes尝试分配其所有节点的负载。因此,您可以在同一个节点中部署所有吊舱。 正如您所说,如果节点发生故障,它将使您的所有pod无法访问

作为一名开发人员,如果您需要在不同的节点之间分布POD,您可以使用以下工具:

  • 守护程序集:确保所有(或某些)节点运行pod的副本

  • 节点选择器:您可以使用标签定义要部署POD的节点

还有其他方法可以实现您的目标,如使用亲和性和反亲和性或pod间亲和性和反亲和性。
这里有kubernetes在文档中提供的所有解决方案:

我可能错了,但我认为任何想要负载平衡2吊舱的人都会优先考虑冗余而不是最小的资源优化。根据您的经验,您是否经常遇到节点故障,并且您是否觉得Kubernetes至少尝试在不同的节点上传播相同类型的吊舱?在权衡方面,如果不需要增加额外的复杂性,api很少不可用是可以接受的。至少在最常用的平台(AWS、IBM Cloud、Google Cloud或Azure)中,节点不可用并不常见。但是,如果发生这种情况,您可以使用工具防止POD部署在该节点上(例如,cordon或drain),稍后我将检查亲和性和反亲和性。我对此有点反感。守护进程集将在每个节点上至少创建一个pod,我可能也不希望这样。另一方面,不建议在生产中使用节点选择器。最后,我觉得在所需数量的节点上进行负载平衡应该是一个内置选项。