如何在k8s群集

时间:2017-07-21 06:36:29

标签: kubernetes

我要用k8s设置德鲁伊集群,我正在寻求有关如何在k8s集群之外暴露重定向的帮助。 假设我有两个ClusterIP服务来公开k8s之外的pod。

  • service(10.0.0.1:8080) - > pod(主机名:协调员)
  • service1(10.0.0.2:8080) - > pod1(主机名:coordinator1)
  • pod和pod1是通过Zookepper进行通信的德鲁伊协调组。由于pod1是领导者,因此对pod1的每个请求都将重定向到pod。
  • 在此设置中,我很擅长服务,但在访问服务时面临重定向问题。
    • 当我通过浏览器访问service1(10.0.0.2:8080)时,我将通过其主机名重定向到pod,即协调员:8081。
    • 但是,协调器在k8s群集之外是未知的,因此无法访问。

您能否就如何处理这种情况向我提出一些建议?任何提示都很感激。

以下是运行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'

3 个答案:

答案 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}}非常有帮助。