我正在尝试向 coredns 添加重写以将域指向集群负载均衡器(以便将该域的请求重定向回集群)。我似乎找不到影响 k3s 的 coredns 配置的方法。有没有办法改变它?
(这是为了解决https://github.com/jetstack/cert-manager/issues/1292#issuecomment-757283796的问题,其中 pod 尝试通过指向路由器 IP 的 DNS 名称联系集群中的另一个服务,这由于 NAT 的工作方式而失败。)
我正在尝试向 coredns 添加重写以将域指向集群负载均衡器(以便将该域的请求重定向回集群)。我似乎找不到影响 k3s 的 coredns 配置的方法。有没有办法改变它?
(这是为了解决https://github.com/jetstack/cert-manager/issues/1292#issuecomment-757283796的问题,其中 pod 尝试通过指向路由器 IP 的 DNS 名称联系集群中的另一个服务,这由于 NAT 的工作方式而失败。)
可以通过添加规则来配置CoreDNS将一个域映射到另一个域。rewrite假设您有域example.com并且您希望该域指向google.com域。
为此CoreDNS,您可以使用rewrite插件。
的配置CoreDNS存储coredns ConfigMap在kube-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 Pod(coredns部署为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 重写文档中找到有关重写插件的更多信息。