GKE搭配Cloud DNS配置Ingress域名时负载均衡未自动创建问题咨询
根因说明
Ingress资源本身只是一组路由规则声明,必须有对应ingress.class的Ingress控制器在集群内运行,才会自动创建负载均衡并生效配置。你当前的Ingress指定了kubernetes.io/ingress.class: nginx,但GKE集群默认未部署Nginx Ingress控制器,没有组件处理该Ingress配置,因此status.loadBalancer字段为空,没有生成负载均衡资源。
另外纠正一个误解:Cloud DNS是域名解析服务,不会自动生成负载均衡资源,你需要等负载均衡创建完成拿到公网IP后,手动在你创建的解析Zone中添加A记录指向该IP即可。
可选解决方案
方案1:使用GKE原生GCE Ingress(无需额外安装组件,适配谷歌云生态)
适合不想额外维护Ingress控制器的场景:
- 修改你的values.yaml中ingress配置段:
ingress: create: true nginx: false # 关闭nginx专属配置 maxBodySize: 250m host: bitbucket.my-domain.com path: "/" annotations: kubernetes.io/ingress.class: "gce" # 指定使用GKE自带的GCE Ingress控制器 # 可选:如果需要固定公网IP,提前在谷歌云VPC预留全球静态IP,填这里的名称 kubernetes.io/ingress.global-static-ip-name: "你的静态IP名称" https: false tlsSecretName:
- 执行
helm upgrade更新你的Bitbucket发布,等待3~5分钟后查看Ingress资源,status.loadBalancer字段会自动显示GCP全球负载均衡的公网IP。 - 进入Cloud DNS的解析Zone,为
bitbucket.my-domain.com添加A记录,指向上述公网IP即可。
方案2:继续使用Nginx Ingress
适合习惯Nginx配置逻辑的场景:
- 首先在GKE集群中部署Nginx Ingress控制器,可直接通过Helm安装官方Chart,或者在谷歌云Marketplace中一键部署。
- 控制器部署完成后会自动创建一个GCP网络负载均衡,你可以在谷歌云控制台的负载均衡页面查看对应的公网IP,同时Ingress资源的
status.loadBalancer字段也会同步该IP。 - 你当前的Ingress配置无需修改,控制器会自动识别处理。
- 进入Cloud DNS的解析Zone,为
bitbucket.my-domain.com添加A记录,指向上述公网IP即可。
常见检查项
- 确认Bitbucket对应的Service类型为ClusterIP即可,无需手动设置为LoadBalancer类型。
- 配置完成后如果访问不通,先检查GCP防火墙规则是否放开了80/443端口的入站流量。
- 如果后续需要开启HTTPS,配合GCE Ingress可直接使用谷歌云托管证书,无需手动管理证书文件。
内容的提问来源于stack exchange,提问作者Artem Prykhodko
相关产品推荐
相关产品推荐

