文章目录
-
- 使用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-es的namespace分区下有如下的服务:
在zjjpt-redis的namespace分区下有如下的服务:
在mysql的namespace分区下有如下的服务:
使用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的Corefile配置文件configmaps中加入namespace_label配置:
重启coredns pod后测试,nslookup指定域名解析IP为coredns的podIP,可以看到mysql分区下的域名不能解析。
使用coredns!=middleware标签报错:
使用coredns notin (middleware)标签:
使用label表达式
如果使用label的方式,配置如下:
此时只需要给指定的svc配置上改label即可:
选择包含标签middleware的svc:会匹配到middleware=redis、middleware=mysql等key是middleware的对象。
















