与 K8S 服务或其底层端点的云内部 IP 的确定性连接?
Deterministic connection to cloud-internal IP of K8S service or its underlying endpoint?
我在 GKE 中有一个 Kubernetes 集群 (1.3.2),我想从我的 google 项目连接虚拟机和服务,该项目与集群共享相同的网络。
有没有办法让位于子网内部但不位于集群本身内部的 VM 连接到服务而无需访问外部 IP?
我知道您可以做很多事情来明确确定服务的 IP 和端口,例如 ENV 和 DNS...但是 clusterIP 在集群外部无法访问(很明显)。
有什么我想念的吗?一个重要的组成部分是,这意味着成为项目的服务 "public",因此我不知道项目中的哪些 VM 将要连接到该服务(这 可能 排除 loadBalancerSourceRanges)。我知道服务实际包装的端点是我可以访问的内部 IP,但是访问该 IP 的唯一好方法是通过 Kube API 或 kubectl,这两种方法都不是理想的访问方式我的服务。
查看我更详尽的回答 ,但最常见的解决方案是在您的 GCP 项目中创建堡垒路由。
在最简单的形式中,您可以创建一个单一的 GCE 路由,以将集群服务 IP 范围内的所有流量 dest_ip 引导到您的一个 GKE 节点上。如果 SPOF 吓到你,你可以创建多条路由指向不同的节点,流量将在它们之间循环。
如果您不想继续管理开销,您可以在 GKE 集群中编写一个简单的控制器来监视节点 API 端点,并确保您有一个实时堡垒在任何给定时间路由到至少 N 个节点。
GCP internal load balancing 刚刚作为 alpha 发布,因此将来可以使用它在 GCP 上实现 kube-proxy,这将消除处理内部服务的堡垒路由的需要。
我在 GKE 中有一个 Kubernetes 集群 (1.3.2),我想从我的 google 项目连接虚拟机和服务,该项目与集群共享相同的网络。
有没有办法让位于子网内部但不位于集群本身内部的 VM 连接到服务而无需访问外部 IP?
我知道您可以做很多事情来明确确定服务的 IP 和端口,例如 ENV 和 DNS...但是 clusterIP 在集群外部无法访问(很明显)。
有什么我想念的吗?一个重要的组成部分是,这意味着成为项目的服务 "public",因此我不知道项目中的哪些 VM 将要连接到该服务(这 可能 排除 loadBalancerSourceRanges)。我知道服务实际包装的端点是我可以访问的内部 IP,但是访问该 IP 的唯一好方法是通过 Kube API 或 kubectl,这两种方法都不是理想的访问方式我的服务。
查看我更详尽的回答
在最简单的形式中,您可以创建一个单一的 GCE 路由,以将集群服务 IP 范围内的所有流量 dest_ip 引导到您的一个 GKE 节点上。如果 SPOF 吓到你,你可以创建多条路由指向不同的节点,流量将在它们之间循环。
如果您不想继续管理开销,您可以在 GKE 集群中编写一个简单的控制器来监视节点 API 端点,并确保您有一个实时堡垒在任何给定时间路由到至少 N 个节点。
GCP internal load balancing 刚刚作为 alpha 发布,因此将来可以使用它在 GCP 上实现 kube-proxy,这将消除处理内部服务的堡垒路由的需要。