如何在Kubernetes

时间:2018-04-16 23:33:43

标签: kubernetes

我有一个应用程序在kubernetes我自己的服务器上运行。该应用程序应该作为网关工作,并具有LoadBalancer服务,将其暴露给世界"。现在,我想将此应用程序与在同一kubernetes cluster内运行的其他应用程序相关联,以便他们可以相互交换HTTP requests

所以,让我们说我的网关应用程序正在端口9000上运行,我想要调用的应用程序在9001上运行。当我curl my_cluster_ip:9001时,它会给我一个回复。然而,我永远不知道Cluster IP会是什么,所以我无法将其实现到我的网关应用程序。

用例正在键入网络浏览器url_of_my_server:9000 - >这将调用网关 - >它将HTTP Request发送到端口9001上的群集中运行的其他应用 - >响应回网关 - >回复给用户。

魔法必须发生的地方以及如何轻松地使这两个应用程序相互交谈,而只有一个应用程序将被暴露于世界"另一个只能从集群内访问?

2 个答案:

答案 0 :(得分:1)

您可以将您的应用在端口9001上公开为服务(假设为myservice)。 执行此操作时,myservice.<namespace>.svc.cluster.local将解析为您的应用的IP地址。有关DNS的更多信息:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/

然后您可以在Kubernetes群集中访问您的应用: http://myservice.<namespace>.svc.cluster.local:9001

答案 1 :(得分:1)

您有几个内部服务发现选项:

  1. 您可以使用群集内部DNS服务查找其他应用程序,详见比特答案。
  2. 如果代理和应用程序在同一名称空间中运行,则存在公开IP和端口的环境变量。这可能意味着如果您删除/读取其他应用程序,则必须重新启动代理,因为端口可能会更改。
  3. 您可以将两个应用程序作为两个不同的容器在同一个窗格中运行;这将确保它们安排在同一主机上,这允许您在同一主机上进行通信。
  4. 另请注意,Kubernetes中已存在对HTTP代理设置的支持;看看IngressIngress Controllers