如何在GKE上通过Ingress配置GCP内网负载均衡并绑定内网域名
GKE 内网负载均衡绑定固定域名最优解决方案
方案选型对比
以下方案均可以解决GCE原生Ingress无法通过K8s资源配置LB前端service label的问题:
- 方案1:搭配ExternalDNS管理自有私有DNS区域(首推,改造成本最低)
无需更换现有Ingress控制器,只需部署ExternalDNS组件并配置对接GCP Cloud DNS私有区域,给你的Loadbalancer类型Service或Ingress资源添加external-dns.alpha.kubernetes.io/hostname注解,ExternalDNS会自动将指定的内网域名解析到LB的VIP,完全绕开service label的配置需求,全程实现K8s声明式管理,无需手动修改GCP控制台的LB配置。
操作注意:如需固定LB VIP,提前在同区域普通业务子网(禁止使用proxy-only子网)预留静态内网IP,给Service添加networking.gke.io/load-balancer-ip注解绑定预留的IP即可。 - 方案2:切换为Nginx Ingress Controller
如果你需要更灵活的7层负载均衡配置能力,可以部署Nginx Ingress Controller,将其Controller对应的Service配置为内网Loadbalancer类型,同样可配合ExternalDNS实现内网域名自动解析,无需关注GCE原生LB的service label字段,所有路由、转发规则都可以通过K8s原生Ingress资源、Nginx Ingress的注解或ConfigMap完成配置。 - 方案3:使用GKE Gateway API
如果你已经在使用K8s Gateway API规范,可以选择GKE官方的Gateway控制器,该控制器支持通过前端配置参数直接声明内网LB的相关属性,无需手动调整LB前端配置,可直接配合域名解析实现固定域名访问。
proxy-only子网异常问题说明
你观察到的LB IP归属集群子网不属于异常:GCP内网7层LB的proxy-only子网是专门供LB代理实例使用的专用子网,LB的前端VIP本身就不允许配置在proxy-only子网内,必须从同区域的普通子网(集群子网、其他业务专用子网均可)分配,无需调整proxy-only子网的配置即可正常使用。
内容的提问来源于stack exchange,提问作者err0r500
相关产品推荐
相关产品推荐

