如何实现Cloud Run与Kubernetes集群通信及IP绑定主机名配置
问题解答
一、关于Cloud Run访问K8s私有服务的理解纠正
你的思路存在偏差,不需要给K8s服务创建公网负载均衡器。正确的做法是让Cloud Run直接接入K8s集群所在的私有VPC,就能通过内网访问集群内的私有服务,完全没必要走公网路径:
- 给Cloud Run配置VPC连接器,将实例接入K8s集群所在的VPC(或通过VPC peering打通两个VPC)。
- K8s服务如果是默认的ClusterIP类型,Cloud Run可以直接用集群内部域名(格式为
[服务名].[命名空间].svc.cluster.local)发起请求。 - 若K8s服务是NodePort或内部LoadBalancer类型,也能直接通过其内部IP/内部域名访问,无需暴露公网IP。
二、给公网IP分配主机名的操作(仅特殊场景适用)
如果确实有特殊需求要通过公网IP访问K8s服务(不推荐,会破坏私有访问的限制),可以按以下步骤分配主机名:
- 在Cloud DNS中创建一个托管域名区域(若尚未创建)。
- 在该托管区域内添加一条A记录,将自定义主机名(如
k8s-service.yourdomain.com)指向目标公网IP。 - 确保你的域名注册商处的DNS服务器地址已配置为Cloud DNS托管区域提供的服务器地址,保证域名解析生效。
三、是否需要更新Cloud Run的DNS?
不需要专门更新Cloud Run的DNS配置。Cloud Run实例默认会继承所在VPC的DNS设置,或使用Google公共DNS服务。只要你配置的主机名能正常解析(比如通过上述Cloud DNS的A记录),Cloud Run就能直接通过该主机名访问对应服务。
内容的提问来源于stack exchange,提问作者Dimitri Danilov
相关产品推荐
相关产品推荐

