You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GKE上实现Ingress/Service自动对应公网可解析子域名

GKE集群自动子域名公网解析实现方案

方案一:通配符DNS+Traefik自动路由匹配(无厂商绑定,轻量无额外组件)

  • 操作步骤:
    1. 在你的公网DNS服务商处,为app-dev.company.com配置通配符A记录*.app-dev.company.com,解析值为Traefik的公网IP,TTL按需求设置即可,开发环境建议设为300s
    2. Traefik配置自动Host匹配规则:开启Ingress自动发现,配置全局规则,当集群内Service标注traefik.ingress.kubernetes.io/router.host: {serviceName}.app-dev.company.com或者配置Ingress模板,自动将Service名称作为子域名前缀拼接在app-dev.company.com,自动生成对应Ingress路由规则
    3. 验证:新建hello-world服务创建后,直接访问hello-world.app-dev.company.com,公网解析会直接命中通配符记录指向Traefik,Traefik自动匹配路由到对应服务
  • 优势:无需修改集群DNS配置,完全不依赖云厂商DNS服务,一次配置长期有效

方案二:ExternalDNS对接自有DNS服务(可控性高,适合生产环境)

  • 操作步骤:
    1. 部署K8s官方开源组件ExternalDNS,配置对接你自己管理的公网DNS服务(自建Bind/PowerDNS或任意第三方DNS服务商均可,无需使用Cloud DNS)
    2. 配置ExternalDNS过滤规则,只监听带有指定annotation的Ingress/Service资源,自动同步公网DNS记录
    3. 配置Traefik侧Ingress自动生成规则,新建服务时自动生成对应host的Ingress资源,触发ExternalDNS自动创建解析记录

方案三:CoreDNS替换kube-dns的正确操作(兼容Azure使用习惯)

  • 操作步骤:
    1. 先关闭GKE对kube-dns的托管特性,执行命令 `gcloud container clusters update <集群名称> --update-addons=KubeDNS=DISABLED --zone <集群可用区>
    2. 按照官方标准流程部署CoreDNS到集群,配置app-dev.company.com的存根域,上游设置为公网DNS服务器
    3. 将原有kube-dns服务的ClusterIP绑定到CoreDNS服务,确保集群内DNS请求全部走CoreDNS
  • 注意:不要直接缩容kube-dns副本,GKE托管的kube-dns会被自动重建,直接操作会引发集群DNS故障

内容的提问来源于stack exchange,提问作者Michael Niemand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:15:03