文章目录

    • 使用namespace_label表达式
    • 使用label表达式
    • 参考

 

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-esnamespace分区下有如下的服务:
coredns kubernetes插件,对指定分区namespace做域名解析_Docker与kubernetes
zjjpt-redisnamespace分区下有如下的服务:
coredns kubernetes插件,对指定分区namespace做域名解析_Docker与kubernetes_02
mysqlnamespace分区下有如下的服务:
coredns kubernetes插件,对指定分区namespace做域名解析_Docker与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-rediszjjpt-es的namespace上打label:

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

coredns kubernetes插件,对指定分区namespace做域名解析_coredns_04
corednsCorefile配置文件configmaps中加入namespace_label配置:
coredns kubernetes插件,对指定分区namespace做域名解析_Docker与kubernetes_05
重启coredns pod后测试,nslookup指定域名解析IP为coredns的podIP,可以看到mysql分区下的域名不能解析。
coredns kubernetes插件,对指定分区namespace做域名解析_coredns_06

使用coredns!=middleware标签报错:
coredns kubernetes插件,对指定分区namespace做域名解析_coredns_07
使用coredns notin (middleware)标签:
coredns kubernetes插件,对指定分区namespace做域名解析_coredns_08

使用label表达式

如果使用label的方式,配置如下:
coredns kubernetes插件,对指定分区namespace做域名解析_coredns_09
此时只需要给指定的svc配置上改label即可:
coredns kubernetes插件,对指定分区namespace做域名解析_Docker与kubernetes_10
选择包含标签middleware的svc:会匹配到middleware=redismiddleware=mysql等key是middleware的对象。
coredns kubernetes插件,对指定分区namespace做域名解析_Docker与kubernetes_11