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

How to configure kube-proxy master_url with multiple apiservers

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

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

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

我认为它的设置方式是在每个主节点上都有一个 kube-proxy,因此每个 kube-proxy 都指向其在 127.0.0.1 / localhost[= 上的主节点10=]

podmaster 决定哪个 api-server 应该 运行,后者又使用那个 master

的本地代理

这是一个很老的问题,但随着问题的持续存在...就到此为止吧。

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

其他解决方案(我更喜欢,但可能并不适用于所有人,也不能解决所有问题)是创建一个 DNS 条目来循环使用 API 服务器,但正如在下面的链接之一,只解决了负载平衡,而不是 HA。

您可以在以下链接中查看本故事的进展:

kube-proxy/kubelet 问题:https://github.com/kubernetes/kubernetes/issues/18174
restclient PR:https://github.com/kubernetes/kubernetes/pull/30588
"official" 解决方案:https://github.com/kubernetes/kubernetes/issues/18174#issuecomment-199381822