确定性连接到K8S服务或其底层端点的云内部IP?

时间:2016-08-09 19:15:06

标签: kubernetes google-kubernetes-engine

我在GKE中有一个Kubernetes集群(1.3.2),我想从我的谷歌项目中连接虚拟机和服务,这些虚拟机和服务与集群共享同一个网络。

对于在子网内部但不在群集内部的VM,有没有办法连接到服务而不需要访问外部IP?

我知道你可以做很多事情来明确地确定服务的IP和端口,例如ENV和DNS ......但是群集外的群集无法访问(显然)。

有什么我想念的吗?对此的一个重要组成部分是,这是项目的“公共”服务,因此我不知道项目中的哪些VM将要连接到服务(此可以排除loadBalancerSourceRanges)。我理解服务实际包含的端点是我可以访问的内部IP,但获得该IP的唯一好方法是通过Kube API或kubectl,这两种方式都不是刺激我服务的理想方式。 / p>

1 个答案:

答案 0 :(得分:2)

查看我更全面的答案here,但最常见的解决方案是在您的GCP项目中创建堡垒路线。

在最简单的形式中,您可以创建单个GCE路由,以指导群集服务IP范围内的所有流量w / dest_ip落在其中一个GKE节点上。如果该SPOF让您感到害怕,您可以创建指向不同节点的多条路线,并且流量将在它们之间循环。

如果管理开销不是您想要继续执行的操作,您可以在GKE集群中编写一个简单的控制器来观察Nodes API端点,并确保您有至少N个节点的实时堡垒路由在任何给定的时间。

GCP internal load balancing刚刚以alpha格式发布,因此将来可以使用它来实现GCP上的kube-proxy,这将消除对堡垒路由处理内部服务的需要。