coredns kubernetes插件,對指定分區namespace做域名解析

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分區下有如下的服務:
在這裏插入圖片描述
zjjpt-redisnamespace分區下有如下的服務:
在這裏插入圖片描述
mysqlnamespace分區下有如下的服務:
在這裏插入圖片描述

使用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

在這裏插入圖片描述
corednsCorefile配置文件configmaps中加入namespace_label配置:
在這裏插入圖片描述
重啓coredns pod後測試,nslookup指定域名解析IP爲coredns的podIP,可以看到mysql分區下的域名不能解析。
在這裏插入圖片描述

使用coredns!=middleware標籤報錯:
在這裏插入圖片描述
使用coredns notin (middleware)標籤:
在這裏插入圖片描述

使用label表達式

如果使用label的方式,配置如下:
在這裏插入圖片描述
此時只需要給指定的svc配置上改label即可:
在這裏插入圖片描述
選擇包含標籤middleware的svc:會匹配到middleware=redismiddleware=mysql等key是middleware的對象。
在這裏插入圖片描述

參考

coredns kubernetes plugin describe

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章