如何使用多个apiservers配置kube-proxy master_url

时间:2015-12-11 11:12:32

标签: proxy kubernetes high-availability

我正在使用带有多个apiservers的集群设置,前面有一个负载均衡器,用于外部访问,并在裸机上安装。

High Availability Kubernetes Clusters文档中提到的一样,我想使用群集中的kubernetes服务进行内部负载均衡。到目前为止,此工作正常,但我不确定设置kube-proxy的最佳方法是什么。它显然不能使用服务IP,因为它根据来自apiserver(master)的数据进行代理。我可以使用任何一个apiservers的IP,但这会导致失去高可用性。因此,我目前看到的唯一可行的选择是利用我的外部负载均衡器,但这似乎有些不对。

有人提出任何想法或最佳做法吗?

2 个答案:

答案 0 :(得分:1)

这是一个非常古老的问题,但问题仍然存在......在这里它会发生。

Kubernetes restclient中存在一个错误,它不允许使用多个IP / URL,因为它将始终获取列表中的第一个IP / URL。这会影响kube-proxy和kubelet,如果您在多主设置中不使用负载均衡器(就像您一样),则会在这些工具中留下单点故障。解决方案可能不是最优雅的解决方案,但目前(我认为)更容易解决。

其他解决方案(我更喜欢,但可能不适用于所有人,并且它不能解决所有问题)是创建一个将围绕您的API服务器循环的DNS条目,但正如下面的一个链接所指出的,这只能解决负载平衡问题,而不是HA。

您可以通过以下链接查看此故事的进展情况:

kube-proxy / kubelet问题:https://github.com/kubernetes/kubernetes/issues/18174
其他客户PR:https://github.com/kubernetes/kubernetes/pull/30588
“官方”解决方案:https://github.com/kubernetes/kubernetes/issues/18174#issuecomment-199381822

答案 1 :(得分:0)

我认为它的设置方式是你在每个主节点上都有一个kube-proxy,所以每个kube-proxy都指向127.0.0.1 / localhost上的主服务器

podmaster确定应该运行哪个api-server,然后使用该主服务器的本地代理