我使用多个apiservers的集群设置,前面有一个负载平衡器,用于外部访问,安装在裸金属上。
就像在高可用性Kubernetes集群文档中提到的那样,我想利用集群中的kubernetes服务使用内部负载平衡。到目前为止,这还不错,但我不知道设置kube-proxy的最佳方法是什么。显然,它不能使用服务IP,因为它基于apiserver (master)的数据对此进行代理。我可以使用任何一个apiserver的IP,但这会导致失去高可用性。因此,我目前看到的唯一可行的选择是使用我的外部负载均衡器,但这似乎是错误的。
有谁有什么想法或最佳做法吗?
发布于 2017-03-21 13:57:31
这是个很老的问题,但随着问题的继续.开始吧。
Kubernetes restclient中存在一个bug,它不允许使用多个IP/URL,因为它将始终获取列表中的第一个IP/URL。这对kube代理和kubelet都有影响,如果您在多主设置中不使用负载均衡器(就像您所做的那样),那么在这些工具中留下一个单一的故障点。这个解决方案可能不是有史以来最优雅的解决方案,但目前(我认为)是比较容易的解决方案。
其他解决方案(我更喜欢,但可能并不适用于每个人,也不能解决所有问题)是创建一个DNS条目,它将循环运行您的API服务器,但正如下面的一个链接所指出的,它只解决负载平衡问题,而不是HA。
您可以在以下链接中看到此故事的进展:
kube/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
发布于 2016-01-04 21:57:08
我认为它的设置方式是在每个主节点上都有一个kube代理,所以每个kube代理在127.0.0.1 / localhost上指向它的主节点。
podmaster确定应该运行哪个api-server,而哪个api服务器依次使用该主服务器的本地代理。
https://stackoverflow.com/questions/34222193
复制相似问题