我想避免将type: "LoadBalancer"用于某种Kubernetes服务,但仍然能够在互联网上发布它。我正在使用(GCP)运行目前运行在单个节点上的Kubernetes集群。
我试图对我们进行externalIPs服务配置,并轮流给出以下的IP:
kubernetes describe node报告的Kubernetes节点的IP地址相一致)LoadBalancer的Kubernetes服务的公共/外部IP。所有这些都没有帮助我使用externalIPs配置使用Kubernetes服务访问我的应用程序。
因此,如何在不使用LoadBalancer-type Kubernetes服务的情况下在互联网上发布服务。
发布于 2016-06-13 18:04:31
如果您不想使用LoadBalancer服务,公开公开您的服务的其他选项有:
NodePort型
创建将type设置为NodePort的服务,Kubernetes将在所有节点VM上分配一个端口,您的服务将在该端口上公开(文档)。例如,如果您有两个节点,w/ public if 12.34.56.78和23.45.67.89,而Kubernetes分配您的服务端口31234,那么该服务将在12.34.56.78:31234 & 23.45.67.89:31234上公开使用
指定externalIPs
如果您有能力将公共IP路由到您的节点,您可以在您的服务中指定externalIPs,告诉Kubernetes“如果您看到有什么东西被发送到IP/ my服务端口,请将它路由到我”(文档)。
集群端点不适用于此,因为这只是您的Kubernetes主服务器的IP。另一个LoadBalancer服务的公共IP无法工作,因为LoadBalancer只配置为路由原始服务的端口。我希望节点IP能够工作,但如果您的服务端口是特权端口,则可能会发生冲突。
使用/proxy/端点
Kubernetes API包含一个/proxy/端点,允许您访问集群端点IP上的服务。例如,如果您的集群端点是1.2.3.4,则可以使用群集凭据访问https://1.2.3.4/api/v1/proxy/namespaces/my-ns/services/my-service,从而达到名称空间my-ns中的https://1.2.3.4/api/v1/proxy/namespaces/my-ns/services/my-service。这实际上应该只用于测试/调试,因为它需要通过您的Kubernetes主服务器(额外的跳数、SPOF等等)的所有通信量。
发布于 2020-03-17 17:02:09
还有一个选项:在你的吊舱上设置hostNetwork标志。
例如,您可以使用helm3以这种方式安装nginx:
helm install --set controller.hostNetwork=true nginx-ingress nginx-stable/nginx-ingress然后,nginx就可以在端口80 & 443的IP地址上获得,该节点是运行吊舱的节点。您可以使用节点选择器或关联或其他工具来影响此选择。
发布于 2019-07-17 05:53:17
在Kubernetes中有几种公开外部服务的惯用方法(请参阅note#1):
https://stackoverflow.com/questions/37792641
复制相似问题