老蒋的知识库

  • 首页
  • 文章归档
  • 关于页面

  • 搜索

K8S CoreDNS配置集群内域名DNS解析直接转发到Apisix SVC

发表于 2023-03-03 | 分类于 K8S部署 | 0 | 阅读次数 41

前言

遇到问题,就想让K8S集群内的所有域名直接访问Apisix的服务

  1. 最近内网测试应用老是需要找指定服务的IP去访问,太麻烦了。
  2. gitlab部署runner时需要配置gitlab的访问域名,填写的是外网域名而非内网svc,明明都是一个局域网通过外网访问太浪费流量了,而且速度也不快。

主要有2个好处:

  1. 域名DNS解析至内网可以减少外网访问流量压力
  2. 如果内外网断网隔离,可以避免内网测试时需要重新配置访问地址(如ip访问),如果直接hosts文件配置K8S每个节点的hosts文件都要修改。

参考资料

K8S官网配置教程: https://kubernetes.io/zh/docs/tasks/administer-cluster/coredns/
coredns官网: https://coredns.io/
coredns插件rewrite重写转发: https://coredns.io/plugins/rewrite/

坑

rewrite name这个插件是匹配部分替换后转发,而不是直接转发访问,例如:

  • www.test.com域名配置rewrite name suffix test.com apisix-gateway.apisix.svc.cluster.local
  • 重写后会变成www.apisix-gateway.apisix.svc.cluster.local前面多了个www.

开始配置

编辑coredns的configmaps

kubectl -n kube-system edit configmaps coredns

添加rewrite插件

apiVersion: v1
data:
  Corefile: |
    .:53 {
    	### 其他的插件配置 ###
        # 加到这个位置,这里用正则全匹配替换转发后域名
        rewrite name regex .*\.ljdzsk\.com apisix-gateway.apisix.svc.cluster.local
        # 加到这前面
        forward . /etc/resolv.conf {
           max_concurrent 1000
        }
    	### 其他的插件配置 ###
    }

等待5分钟左右coredns自动更新配置,或者手动删除coredns的pod进行重启

kubectl -n kube-system get pod | grep coredns | awk '{print $1}' | xargs kubectl -n kube-system delete pod
  • 本文作者: jagger
  • 本文链接: /archives/k8scoredns-pei-zhi-ji-qun-nei-yu-ming-dns-jie-xi-zhi-jie-zhuan-fa-dao-svc
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
测试用例与质量管理
GitHub 国内加速方法方法
jagger

jagger

66 日志
31 分类
0 标签
Creative Commons
0%
© 2026 jagger
由 Halo 强力驱动