如何在Google Container Engine上使用Kubernetes服务公开动态端口?

时间:2014-12-21 07:01:07

标签: kubernetes google-kubernetes-engine

我正尝试通过TCP协议从本地计算机通过互联网连接到Google容器引擎(GKE)上的Docker容器。到目前为止,我已经使用了Kubernetes服务,它提供了一个外部IP地址,因此本地机器可以使用该服务连接到GKE上的容器。当我们创建服务时,我们只能指定一个端口,并且不能指定端口范围。请参阅下面的my-ros-service.yaml。在这种情况下,我们可以从GCE外部通过11311端口访问容器。

但是,在我的容器上运行的某些应用程序会公开动态端口以连接到其他应用程序。因此,在运行应用程序之前,我无法确定应用程序使用的端口号,也无法创建Kubernetes服务。

到目前为止,我已经设法通过在运行应用程序时创建许多具有不同端口的服务来连接到容器。但这不是解决问题的现实方法。

我的问题是:

如何使用Kubernetes服务连接到从GCE外部公开Docker容器上的动态端口的应用程序?

如果可能,我们是否可以在运行在容器上运行的应用程序之前创建一个为传入连接公开动态端口的服务?

非常感谢您提供的任何建议或信息。

提前谢谢。

我-ROS-service.yaml

kind: Service
apiVersion: v1beta1
id: my-ros-service
port: 11311
selector:
  name: my-ros
containerPort: 11311
createExternalLoadBalancer: true

1 个答案:

答案 0 :(得分:5)

我认为目前没有比你正在做的更好的解决方案。关于每个服务有多个端口,已经存在相关问题kubernetes issue 1802。我提到了你对这个问题的要求。您可能希望跟进有关您的用例的更多信息,例如您正在运行的程序(如果它是公开的),以及动态端口是否来自特定的连续范围。