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

问题描述 投票:0回答:2

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

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

kubernetes coredns k3s
2个回答
1
投票

可以通过添加

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重写文档中找到有关重写插件的更多信息。


0
投票

正如 Jan W 所说(我经历了惨痛的教训),对 coredns ConfigMap 的任何更改最终都会丢失。

改用 coredns-custom 配置映射:

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns-custom
  namespace: kube-system
data:
  default.override: |
    rewrite name example.com google.com # mapping example.com to google.com
    rewrite name regex (.*)\.bar\.com google.com # mapping *.bar.com to google.com

并通过

应用它
kubectl apply -f coredns-custom.yml

这些规则将被删除在标准 coredns 配置中指定

import /etc/coredns/custom/*.override
的位置。

.:53 {
        errors
        health
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          fallthrough in-addr.arpa ip6.arpa
        }
        hosts /etc/coredns/NodeHosts {
          ttl 60
          reload 15s
          fallthrough
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
        import /etc/coredns/custom/*.override
    }
© www.soinside.com 2019 - 2024. All rights reserved.