如何在 k8s 的 coredns 中设定,部分域名转发到某一个 pod(提供了 DNS 服务)来解析? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
asilin
V2EX    Kubernetes

如何在 k8s 的 coredns 中设定,部分域名转发到某一个 pod(提供了 DNS 服务)来解析?

  •  
  •   asilin 2021-12-04 11:23:33 +08:00 2689 次点击
    这是一个创建于 1412 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,业务上部分域名(a.b.com)需要使用自定义 DNS 来解析,这在 CoreDNS 中很好设置,使用如下形式:

    a.b.com:53 { forward . 192.168.123.45:5353 } 

    上述配置,将告诉 CoreDNS 遇到 a.b.com 及其子域的查询,就转到 192.168.123.45:5353 这个 DNS 。

    但是现在有一个需求,提供 192.168.123.45:5353 的机器是单点的,所以就想把 a.b.com 子域查询的 DNS 服务部署在 k8s 集群中,享受 Pod 带来的所有便利。

    所以,问题就是如何将请求转发给这个 Pod 呢?写死 Pod IP 肯定不行,因为 IP 会变; 使用 NodePort 将端口映射出来,再写死 NodePort IP ,嗯... 也是一种办法,但不是很优雅。

    有没有 V 友能够解答下?

    第 1 条附言    2021-12-04 18:16:29 +08:00
    在 SF 上找到有一个相同需求的问题: https://stackoverflow.com/questions/64167215/coredns-forward-plugin-to-use-a-k8s-service-name

    从唯一的回答来看,仅靠 CoreDNS 本身,是无法实现将某一个域名解析的 upstream dns 设置为 k8s 的 service 域名的。
    15 条回复    2021-12-04 23:22:48 +08:00
    liuliuball
        1
    liuliuball  
       2021-12-04 11:29:21 +08:00 via iPhone
    能 forward 到 service 吗
    asilin
        2
    asilin  
    OP
       2021-12-04 11:30:10 +08:00 via Android
    @liuliuball 就是这么想的,但是查找了 Google 和官方文档,没发现类似写法
    swulling
        3
    swulling  
       2021-12-04 11:37:19 +08:00 via iPhone
    用 rewrite
    https://coredns.io/2017/05/08/custom-dns-entries-for-kubernetes/

    前一个项目里用过。

    rewrite name foo.example.com foo.default.svc.cluster.local
    asilin
        4
    asilin  
    OP
       2021-12-04 11:44:43 +08:00 via Android
    @swulling 子域或者泛域名解析也可以吗?我试试
    Infinitify
        5
    Infinitify  
       2021-12-04 13:19:36 +08:00
    @asilin 这个设配好了,估计宝塔也可以跑在 K8S 中了。
    swulling
        6
    swulling  
       2021-12-04 14:41:41 +08:00 via iPhone
    @asilin 功能很强大,别说子域名了,正则匹配都行

    https://coredns.io/plugins/rewrite/
    wd
        7
    wd  
       2021-12-04 17:05:08 +08:00 via iPhone
    给你的 service 设置一个固定的 ip 不就可以了么
    yprisoner
        8
    yprisoner  
       2021-12-04 17:18:13 +08:00
    用 service externalName 可以吗
    asilin
        9
    asilin  
    OP
       2021-12-04 17:40:08 +08:00 via Android
    @wd 因为 coredns 不能随便修改(不由我们控制),如果我这边把 service 删除了,或者 ip 被占用了,就不太符合预期了。
    asilin
        10
    asilin  
    OP
       2021-12-04 17:40:40 +08:00 via Android
    @yprisoner 需要子域或者泛域名解析
    asilin
        11
    asilin  
    OP
       2021-12-04 18:22:55 +08:00
    @swulling #6 rewrite 本身是在 CoreDNS 内部解决 DNS 的请求转换,而不是将解析送给上有的 DNS 服务器,应该不满足我的需求。
    v2000000001ex
        12
    v2000000001ex  
       2021-12-04 18:30:32 +08:00
    配合 dnsmasq 一起使用?
    asilin
        13
    asilin  
    OP
       2021-12-04 18:33:36 +08:00
    @v2000000001ex #12 是的,就是想将 dnsmasq 作为上游 DNS ,运行在 k8s 集群中,自定义某些特定域名及其子域名的解析。
    wd
        14
    wd  
       2021-12-04 23:14:45 +08:00 via iPhone
    @asilin 不理解 你这个服务如果是你自己的,为什么会出现你说的情况呢? ip 你先占到了在改 coredns 啊,service 为啥会被删除?如果删除不就是不想提供服务了吗?不改 coredns 顶多就是你那个自定义域名不能解析
    asilin
        15
    asilin  
    OP
       2021-12-04 23:22:48 +08:00
    @wd #14 具体需求就是 k8s 不由我们掌控,偶尔让对方修改一次 CoreDNS 还可以,多次修改可能会拒绝。

    当 service 被删除(无论是有意还是无意),都会导致 service ip 变化,但是 service name 是恒定的。

    所以,希望在 CoreDNS 中填写一个恒定的 service name ,比多次让对方修改变化的 service ip ,更现实。

    当然了,如果 service 不会被删除,那 service ip 肯定不会变,这种情况下 service ip 也是最佳方案。

    最理想的当然是 forward 到 恒定的 service name 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5313 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 05:55 PVG 13:55 LAX 22:55 JFK 01:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86