可以直接从同一GCE项目中的任何虚拟设备访问Google容器引擎群集中的容器。但是,服务的内部IP无法访问,我猜是因为它是一个虚拟IP而不是外部可访问的。
在不使用类型负载均衡器并公开公开服务的情况下,使服务可访问的最佳方法是什么?我是否需要使用入口对象和nginx / haproxy入口控制器?或者有更简单的方法吗?
答案 0 :(得分:0)
通过“使服务可访问”和“不公开公开服务”,您的意思并不完全清楚。您的意思是您希望能够从GCE群集外的GCE到达您的服务,而不是来自GCP外部?
如果这是您的意思,请查看serviceSpec中的externalIP
字段 - http://kubernetes.io/docs/user-guide/services/#external-ips。您可以为服务分配外部IP地址,然后安装正确的防火墙规则。
答案 1 :(得分:0)
也许为时已晚,但我也面临同样的问题而且我有部分解决方案。
我不希望我的服务公开公开,因此我没有入口或节点端口服务。
在GKE中,Kubernetes服务虚拟IP范围默认情况下只能在群集中访问。
但您可以通过创建GCE路由使其可以在集群外部访问,该路由允许您将kubernetes服务的虚拟IP范围转发到任何一个kubernetes节点,如下所示。
gcloud compute routes create --destination-range 10.x.x.x/20 --next-hop-instance kube-node-0
这显然是一个黑客攻击,因为在所有服务流量都在的节点出现故障,无论出于何种原因失败(集群升级/ kube版本升级等)。
在我看来,解决方案是让一个外部节点自动发现kubernetes节点并对外部服务流量进行负载均衡,尽管我还没有让它工作。
我发现这个talk对于理解kubernetes和GKE网络非常有用。
答案 2 :(得分:0)
Internal load balancer似乎是可行的方式