我要用k8s设置德鲁伊集群,我正在寻求有关如何在k8s集群之外暴露重定向的帮助。 假设我有两个ClusterIP服务来公开k8s之外的pod。
您能否就如何处理这种情况向我提出一些建议?任何提示都很感激。
以下是运行wget -S -O - 10.0.0.1:8081
--2017-07-21 16:36:18-- http://10.0.0.1:8081/
Connecting to 10.0.0.1:8081... connected.
HTTP request sent, awaiting response...
HTTP/1.1 307 Temporary Redirect
Date: Fri, 21 Jul 2017 08:36:25 GMT
Location: http://coordinator:8081/
Content-Length: 0
Server: Jetty(9.3.16.v20170120)
Location: http://coordinator:8081/ [following]
--2017-07-21 16:36:18-- http://coordinator:8081/
Resolving coordinator (coordinator)... failed: Temporary failure in name resolution.
wget: unable to resolve host address 'coordinator'
答案 0 :(得分:0)
我想到的一个解决方案(虽然有点过度工作)是为了确保你总能只击中领导者。
如果你可以针对你的pod创建一个准备就绪检查,如果它是领导者并将它们链接到一个公共服务,则返回ok,该服务将始终指向活动的领导者。
答案 1 :(得分:0)
问题不在于kubernetes。应用程序服务器(Jetty)发出重定向(到'协调器';而不是'coordinator1 / 2'这是另一个问题),而不是kube-proxy。
可能最简单的解决方案是在集群内部设置一个nginx来执行反向代理来处理重定向。
(您也不需要像现在这样的2项服务)
答案 2 :(得分:0)
nginx + confd
我遇到了完全相同的问题,并找到了安装nginx反向代理的最佳解决方案,将所有流量转发给当前的领导者。 nginx配置由confd更新,this article正在监视zookeeper以查找overlord / coordinator发现密钥的更改。
为了进行设置,我发现{{3}}非常有帮助。