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

Kubernetes如何将.svc.cluster.local流量重定向到自定义svc域名

解决方案:CoreDNS全局rewrite规则配置

你之前测试的ExternalName Service是单Namespace下的单个服务别名,无法覆盖全集群所有.svc.cluster.local后缀的解析请求,因此没有生效。可以通过修改CoreDNS的全局配置实现自动域名重写,无需修改任何上层应用的YAML配置,操作步骤如下:

步骤1:修改CoreDNS Corefile配置

CoreDNS的默认配置以ConfigMap形式存放在kube-system命名空间下,执行以下命令编辑:

kubectl edit configmap coredns -n kube-system

在Corefile的kubernetes配置段上方新增rewrite正则匹配规则,修改后完整配置参考如下:

.:53 {
    errors
    health
    # 新增规则:将所有*.svc.cluster.local查询自动重写为*.svc.k8s.my-domain.com
    rewrite name regex (.*)\.svc\.cluster\.local {1}.svc.k8s.my-domain.com answer auto
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       fallthrough in-addr.arpa ip6.arpa
       ttl 30
    }
    prometheus :9153
    forward . /etc/resolv.conf {
       max_concurrent 1000
    }
    cache 30
    loop
    reload
    loadbalance
}

该规则会自动匹配所有以.svc.cluster.local为后缀的域名解析请求,替换为你自定义的.svc.k8s.my-domain.com后缀后再执行解析,同时应答内容会自动适配原请求域名,客户端侧完全无感知。

步骤2:验证配置生效

保存ConfigMap后CoreDNS会自动热加载配置,等待1~2分钟后进入任意运行中的Pod执行解析测试:

nslookup dgraph-service.dgraph-namespace.svc.cluster.local

如果返回结果与直接解析dgraph-service.dgraph-namespace.svc.k8s.my-domain.com的ClusterIP一致,说明配置已生效。

注意事项

  • 若你的CoreDNS通过Helm部署,不要直接修改ConfigMap,需要更新Helm Values中的Corefile配置,避免后续版本升级时自定义配置被覆盖
  • 该规则不会影响原生.svc.k8s.my-domain.com后缀、或不带后缀的短域名解析能力,原有正常通信的地址不受影响
  • 若解析未生效可查看CoreDNS Pod日志排查规则匹配情况:
kubectl logs -n kube-system -l k8s-app=kube-dns

内容的提问来源于stack exchange,提问作者Hongbo Miao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:45:03