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

标签 proxy kubernetes high-availability

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

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

有人有任何想法或最佳实践吗?

最佳答案

这是一个很老的问题,但随着问题的持续存在......就这样了。

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
“官方”解决方案:https://github.com/kubernetes/kubernetes/issues/18174#issuecomment-199381822

关于proxy - 如何使用多个 apiserver 配置 kube-proxy master_url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34222193/

相关文章:

database - 管理将破坏性数据库更改迁移到由同一应用程序的旧版本共享的数据库

linux - 没有误报风险的高可用性计算 : How to deal with a non-returning system call,?

javascript - Node 获取响应为 503,其中请求响应为代理后面的 200

java - 代理背后的 Maven

docker - goproxy 背后的 gPRC 返回证书错误,在没有代理的情况下工作正常

kubernetes - SCP没有提供此类文件或目录

amazon-web-services - 如何使用 helm-chart 设置 nginx-ingress 的 AWS ELB 名称

HTTP 代理拒绝 Flash 套接字策略文件请求

kubernetes - 一个k8s集群可以容纳多少个namespace?

amazon-redshift - 实现 Redshift 的高可用性?