文章目录

kubernetes [ZONES...] {
endpoint URL
tls CERT KEY CACERT
kubeconfig KUBECONFIG CONTEXT
namespaces NAMESPACE...
labels EXPRESSION
pods POD-MODE
endpoint_pod_names
ttl TTL
noendpoints
transfer to ADDRESS...
fallthrough [ZONES...]
ignore empty_service
}

在​​zjjpt-es​​的​​namespace​​分区下有如下的服务:

coredns kubernetes插件,对指定分区namespace做域名解析_coredns

在​​zjjpt-redis​​的​​namespace​​分区下有如下的服务:

coredns kubernetes插件,对指定分区namespace做域名解析_coredns_02

在​​mysql​​的​​namespace​​分区下有如下的服务:

coredns kubernetes插件,对指定分区namespace做域名解析_kubernetes_03

使用namespace_label表达式


namespaces NAMESPACE [NAMESPACE…] only exposes the k8s namespaces listed. If this option is omitted all namespaces are exposed



namespace_labels EXPRESSION only expose the records for Kubernetes namespaces that match this label selector. The label selector syntax is described in the Kubernetes User Guide - Labels. An example that only exposes namespaces labeled as “istio-injection=enabled”, would use: labels istio-injection=enabled.



labels EXPRESSION only exposes the records for Kubernetes objects that match this label selector. The label selector syntax is described in the Kubernetes User Guide - Labels. An example that only exposes objects labeled as “application=nginx” in the “staging” or “qa” environments, would use: labels environment in (staging, qa),application=nginx.


label表达式语法:​​k8s官方文档:label语法​

给​​zjjpt-redis​​​和​​zjjpt-es​​的namespace上打label:

kubectl label ns zjjpt-redis coredns=middleware
kubectl label ns zjjpt-es coredns=middleware

coredns kubernetes插件,对指定分区namespace做域名解析_coredns_04

在​​coredns​​的​​Corefile​​配置文件​​configmaps​​中加入​​namespace_label​​配置:

coredns kubernetes插件,对指定分区namespace做域名解析_kubernetes_05

重启​​coredns​​ pod后测试,nslookup指定域名解析IP为​​coredns​​的podIP,可以看到​​mysql​​分区下的域名不能解析。

coredns kubernetes插件,对指定分区namespace做域名解析_edn_06

使用​​coredns!=middleware​​标签报错:

coredns kubernetes插件,对指定分区namespace做域名解析_redis_07

使用​​coredns notin (middleware)​​标签:

coredns kubernetes插件,对指定分区namespace做域名解析_kubernetes_08

使用label表达式

如果使用label的方式,配置如下:

coredns kubernetes插件,对指定分区namespace做域名解析_coredns_09

此时只需要给指定的​​svc​​配置上改label即可:

coredns kubernetes插件,对指定分区namespace做域名解析_coredns_10

选择包含标签​​middleware​​的svc:会匹配到​​middleware=redis​​、​​middleware=mysql​​等key是​​middleware​​的对象。

coredns kubernetes插件,对指定分区namespace做域名解析_el表达式_11

参考

​coredns kubernetes plugin describe​