coredns 自定义解析域名

介绍

CoreDNS部署作为具有静态IP的Kubernetes服务公开。CoreDNS和kube-dns服务都kube-dns在该metadata.name字段中命名。这样做可以使依赖于旧kube-dns服务名称的工作负载具有更强的互操作性,以解析集群内部的地址。它抽象出了DNS提供程序在该公共端点后面运行的实现细节。kubelet将DNS传递给带有--cluster-dns=<dns-service-ip>标志的每个容器。

DNS名称也需要域名。您可以使用标志在kubelet中配置本地域--cluster-domain=<default-local-domain>

DNS服务器支持正向查找(A记录),端口查找(SRV记录),反向IP地址查找(PTR记录)等。有关更多信息,请参阅服务和Pod的DNS

自定义DNS服务

CoreDNS是一个通用的权威DNS服务器,可以作为集群DNS,符合dns规范

CoreDNS ConfigMap选项

CoreDNS是一个模块化和可插拔的DNS服务器,每个插件都为CoreDNS添加了新功能。这可以通过维护Corefile来配置,Corefile是CoreDNS配置文件。集群管理员可以修改CoreDNS Corefile的ConfigMap以更改服务发现的工作方式。

在Kubernetes中,CoreDNS安装了以下默认的Corefile配置。

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           upstream
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }

Upstream 用于解析指向外部主机的服务(外部服务)。

  • prometheus:CoreDNS的度量标准可以在http:// localhost:9153 / Prometheus格式的指标中找到。
  • proxy:任何不在Kubernetes集群域内的查询都将转发到预定义的解析器(/etc/resolv.conf)。
  • cache:这将启用前端缓存。
  • loop:检测简单的转发循环,如果找到循环则停止CoreDNS进程。
  • reload:允许自动重新加载已更改的Corefile。编辑ConfigMap配置后,请等待两分钟以使更改生效。
  • loadbalance:这是一个循环DNS负载均衡器,可以在答案中随机化A,AAAA和MX记录的顺序。

 

有时我们需要使Pod内解析特定域名.consul.local, 此时可以在CoreDNS中配置它。 明确强制所有非集群DNS查找要经过特定的名称服务器(nameserver)而不是/etc/resolv.conf

proxy . 172.16.0.1

upstream 172.16.0.1


最终的ConfigMap以及默认Corefile配置如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        hosts {
            10.222.111.232 e34574cedpd.redis.rds.aliyuncs.com
            fallthrough
        }
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           upstream 172.16.0.1
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . 172.16.0.1
        cache 30
        loop
        reload
        loadbalance
        }
        consul.local:53 {
            errors
            cache 30
            proxy . 10.150.0.1
    }

 

发表评论