在 k3s 上自定义 coredns 以将域直接指向集群负载均衡器

Posted

技术标签:

【中文标题】在 k3s 上自定义 coredns 以将域直接指向集群负载均衡器【英文标题】:Customizing coredns on k3s to point a domain directly to the cluster loadbalancer 【发布时间】:2021-04-20 00:03:34 【问题描述】:

我正在尝试向 coredns 添加重写以将域指向集群负载均衡器(以便将该域的请求重定向回集群)。我似乎找不到影响 k3s 的 coredns 配置的方法。有办法改吗?

(这是为了解决 https://github.com/jetstack/cert-manager/issues/1292#issuecomment-757283796 问题,其中 pod 尝试通过指向路由器 IP 的 DNS 名称联系集群中的另一个服务,但由于 NAT 的工作方式而失败。)

【问题讨论】:

【参考方案1】:

可以通过添加rewrite 规则来配置CoreDNS 将一个域映射到另一个域。 假设您有域 example.com,并且您希望该域指向 google.com 域。

要在CoreDNS 中执行此操作,您可以使用rewrite 插件。

CoreDNS 的配置存储在 coredns ConfigMapkube-system 命名空间中。 您可以使用以下方法对其进行编辑:

root@kmaster:~# kubectl edit cm coredns -n kube-system

只需添加一条rewrite 规则,如下例所示:

apiVersion: v1
data:
  Corefile: |
    .:53 
        errors
        health
        rewrite name example.com google.com # mapping example.com to google.com
        ready
...

接下来您需要重新加载CoreDNS,以使用新配置。您可以删除 coredns Podcoredns 部署为 Deployment,因此将创建新的 Pod)或者您可以发送 SIGUSR1 告诉它优雅地重新加载。

最后我们可以检查一下它是如何工作的:

root@kmaster:~# kubectl run -it --rm --image=infoblox/dnstools:latest dnstools
dnstools# host -t A google.com
google.com has address 172.217.21.238
dnstools# host -t A example.com
example.com has address 172.217.21.238

你可以在Coredns rewrite documentation找到更多关于重写插件的信息。

【讨论】:

@tibbe 这是answer your question吗?

以上是关于在 k3s 上自定义 coredns 以将域直接指向集群负载均衡器的主要内容,如果未能解决你的问题,请参考以下文章

k3s cicd,安装gitea和drone

请教关于WPF上自定义控件添加事件的问题

如何通过组策略将域用户设置为本地管理员账户

如何通过组策略将域用户设置为本地管理员账户

在视图上自定义多个手势

在 didFinishLaunching 上自定义视图控制器堆栈