我想避免使用type: "LoadBalancer"
对于某个 Kubernetes Service,但仍然能够将其发布到互联网上。我正在使用 Google Cloud Platform (GCP) 来运行当前在单个节点上运行的 Kubernetes 集群。
我尝试给我们externalIPs
服务配置并轮流提供以下 IP:
- 托管 Kubernetes 集群的实例(外部 IP;这也与 Kubernetes 节点的 IP 地址一致,如
kubernetes describe node
)
- Kubernetes 集群端点(由 Google Cloud Console 在集群详细信息中报告)
- 另一个 Kubernetes 服务类型的公共/外部 IP
LoadBalancer
运行在同一个节点上。
以上都没有帮助我使用 Kubernetes 服务来访问我的应用程序externalIPs
配置。
那么,如何在不使用LoadBalancer
-类型 Kubernetes 服务。
如果您不想使用LoadBalancer
服务,公开公开您的服务的其他选项是:
Type NodePort
创建您的服务type
set to NodePort
,并且 Kubernetes 将在所有节点虚拟机上分配一个端口,您的服务将在该端口上公开(docs http://kubernetes.io/docs/user-guide/services/#type-nodeport)。例如。如果你有 2 个节点,带有公共 IP12.34.56.78
and 23.45.67.89
,并且 Kubernetes 分配您的服务端口 31234,那么该服务将在两者上公开可用12.34.56.78:31234
& 23.45.67.89:31234
Specify externalIPs
如果您能够将公共 IP 路由到您的节点,您可以指定externalIPs
在你的服务中告诉 Kubernetes “如果你看到有东西通过我的服务端口发往该 IP,请将其路由给我。” (docs http://kubernetes.io/docs/user-guide/services/#external-ips)
集群端点对此不起作用,因为这只是 Kubernetes 主节点的 IP。另一个人的公网IPLoadBalancer
服务将无法工作,因为 LoadBalancer 仅配置为路由该原始服务的端口。我希望节点 IP 能够工作,但如果您的服务端口是特权端口,则可能会发生冲突。
Use the /proxy/
终点
Kubernetes API 包括/proxy/
允许您访问集群端点 IP 上的服务的端点。例如。如果您的集群端点是1.2.3.4
,你可以达到my-service
在命名空间中my-ns
通过访问https://1.2.3.4/api/v1/proxy/namespaces/my-ns/services/my-service
使用您的集群凭据。这实际上应该只用于测试/调试,因为它在到达服务的途中通过 Kubernetes master 接收所有流量(额外的跃点、SPOF 等)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)