首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不使用LoadBalancer类型的情况下发布Kubernetes服务(在GCP上)

如何在不使用LoadBalancer类型的情况下发布Kubernetes服务(在GCP上)
EN

Stack Overflow用户
提问于 2016-06-13 14:40:11
回答 3查看 6.8K关注 0票数 13

我想避免将type: "LoadBalancer"用于某种Kubernetes服务,但仍然能够在互联网上发布它。我正在使用(GCP)运行目前运行在单个节点上的Kubernetes集群。

我试图对我们进行externalIPs服务配置,并轮流给出以下的IP:

  • 承载Kubernetes集群的实例(外部IP;它还与kubernetes describe node报告的Kubernetes节点的IP地址相一致)
  • Kubernetes集群端点(如Google控制台在集群详细信息中所报告的那样)
  • 运行在同一节点上的另一个类型为LoadBalancer的Kubernetes服务的公共/外部IP。

所有这些都没有帮助我使用externalIPs配置使用Kubernetes服务访问我的应用程序。

因此,如何在不使用LoadBalancer-type Kubernetes服务的情况下在互联网上发布服务。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-13 18:04:31

如果您不想使用LoadBalancer服务,公开公开您的服务的其他选项有:

NodePort

创建将type设置为NodePort的服务,Kubernetes将在所有节点VM上分配一个端口,您的服务将在该端口上公开(文档)。例如,如果您有两个节点,w/ public if 12.34.56.7823.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等等)的所有通信量。

票数 12
EN

Stack Overflow用户

发布于 2020-03-17 17:02:09

还有一个选项:在你的吊舱上设置hostNetwork标志。

例如,您可以使用helm3以这种方式安装nginx:

代码语言:javascript
复制
 helm install --set controller.hostNetwork=true nginx-ingress nginx-stable/nginx-ingress

然后,nginx就可以在端口80 & 443的IP地址上获得,该节点是运行吊舱的节点。您可以使用节点选择器或关联或其他工具来影响此选择。

票数 4
EN

Stack Overflow用户

发布于 2019-07-17 05:53:17

在Kubernetes中有几种公开外部服务的惯用方法(请参阅note#1):

  1. 正如OP所指出的那样,Service.Type=LoadBalancer。
  2. Service.Type=NodePort,这将暴露节点的IP。
  3. Service.Type=ExternalName,通过返回CNAME记录将服务映射到externalName字段的内容(您需要使用ExternalName类型的CoreDNS版本1.7或更高版本)。
  4. 入口。这是一个新概念,它将永久的HTTP和/或HTTPS路由公开到Kubernetes集群中的服务,您甚至可以将路由映射到多个服务。但是,这只映射HTTP和/或HTTPS路由。(见note#2)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37792641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档